可以实现CUDA内核的即时(jit)编译吗?

时间:2012-11-26 14:42:34

标签: cuda jit

CUDA是否支持CUDA内核的JIT编译?

我知道OpenCL提供此功能。

我有一些在运行时没有改变的变量(即仅依赖于输入文件),因此我想在内核编译时(即在运行时)用宏定义这些值。

如果我在编译时手动定义这些值,我的寄存器使用率将从53降至46,这极大地提高了性能。

2 个答案:

答案 0 :(得分:1)

如果你可以使用Python,你可以使用优秀的pycuda模块在​​运行时编译你的内核。结合模板引擎(如Mako),您将拥有一个非常强大的元编程环境,允许您动态调整内核,以适应您可用的任何架构和特定设备属性(显然有些事情会难以完全动态和自动化。

您还可以考虑使用不同的参数维护内核的几个不同版本,程序可以根据您输入的任何输入在运行时选择它们。

答案 1 :(得分:1)

可以使用cuda 7.0的nvrtc库。通过这个库,您可以在运行时编译您的cuda代码。

http://devblogs.nvidia.com/parallelforall/cuda-7-release-candidate-feature-overview/

你可以获得什么样的优势?在我看来,我无法找到动态编译的那么多戏剧性优势。