CUDA是否支持CUDA内核的JIT编译?
我知道OpenCL提供了这个功能。
我有一些在运行时不会改变的变量(即仅依赖于输入文件),因此我想在内核编译时使用宏定义这些值(即在运行时)。
如果我在编译时手动定义这些值,我的寄存器使用量将从53降至46,这极大地提高了性能。
CUDA是否支持CUDA内核的JIT编译?
我知道OpenCL提供了这个功能。
我有一些在运行时不会改变的变量(即仅依赖于输入文件),因此我想在内核编译时使用宏定义这些值(即在运行时)。
如果我在编译时手动定义这些值,我的寄存器使用量将从53降至46,这极大地提高了性能。
此功能通过cuda 7.0的nvrtc库实现。使用此库,您可以在运行时编译cuda代码。
http://devblogs.nvidia.com/parallelforall/cuda-7-release-candidate-feature-overview/
我认为动态编译并没有太多显著的优势,您能从中获得哪些优点呢?clBuildProgram
的东西。如果GPU二进制文件不存在,CUDA确实会对设备无关的PTX代码进行运行时编译,但我不知道你如何利用它来解决你的问题。 - Brendan Wood