How to generate .ptx file using Visual Studio

I’m trying to make a new OptixHello project using VS2013. I created a CUDA runtime project, changed NVCC compilation type from "Generate hybrid object file(–compile)"to “Generate .ptx file(-ptx)” .What really confuses me is that the ptx file generated in this way is much longer than the one generated using function “sutil::getPtxString”. As a result,optix program can not be created using the former ptx file.

My project can run well using the function “sutil::getPtxString”. But it would take a few seconds to compile the “.cu” file. OptiX-Advanced-Samples can generated ptx file faster by configuring CMake in VS projects, but I can hardly get the hang of it. Is there any other simple way to generate the ptx file?

Thanks a lot!

For the PTX code generation you possibly need to set some more options:

  • Pick the SM target to be sm_30 (Kepler), like with --gpu-architecture=compute_30. That way the code can be used on all supported devices from Kepler and higher.
  • Do not enable debug (-g, -G), not even in debug build targets. OptiX doesn’t handle the embedded information.
  • Always enable --use_fast_math, otherwise the CUDA compiler will not generate the .approx calls for the trigonometric functions. That might result in considerably bigger and much slower code.
  • Enable --relocatable-device-code=true, otherwise OptiX callable programs will not be generated with CUDA 8.0 and above due to dead code elimination of unreferenced functions.
  • Only 64-bit code is supported, use --machine=64.
1 Like