CUDA是否支持CUDA内核的JIT编译?
我知道OpenCL提供此功能。
我有一些在运行时没有改变的变量(即仅依赖于输入文件),因此我想在内核编译时(即在运行时)用宏定义这些值。
如果我在编译时手动定义这些值,我的寄存器使用率将从53降至46,这极大地提高了性能。
答案 0 :(得分:1)
如果你可以使用Python,你可以使用优秀的pycuda模块在运行时编译你的内核。结合模板引擎(如Mako),您将拥有一个非常强大的元编程环境,允许您动态调整内核,以适应您可用的任何架构和特定设备属性(显然有些事情会难以完全动态和自动化。
您还可以考虑使用不同的参数维护内核的几个不同版本,程序可以根据您输入的任何输入在运行时选择它们。
答案 1 :(得分:1)
可以使用cuda 7.0的nvrtc库。通过这个库,您可以在运行时编译您的cuda代码。
http://devblogs.nvidia.com/parallelforall/cuda-7-release-candidate-feature-overview/
你可以获得什么样的优势?在我看来,我无法找到动态编译的那么多戏剧性优势。