5

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

我知道 OpenCL 提供了这个功能。

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

如果我在编译时手动定义这些值,我的寄存器使用量会从 53 下降到 46,这大大提高了性能。

4

2 回答 2

1

它随 cuda 7.0 的 nvrtc 库提供。通过这个库,您可以在运行时编译您的 cuda 代码。

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

但是你可以获得什么样的优势?在我看来,我找不到动态编译的这么多显着优势。

于 2015-03-12T11:01:10.713 回答
1

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

您还可以考虑只维护几个具有不同参数的不同版本的内核,您的程序可以在运行时根据您提供给它的任何输入在它们之间进行选择。

于 2012-11-26T17:29:29.440 回答