【发布时间】:2013-06-14 12:49:35
【问题描述】:
我目前有一个主机函数,其中包括一个循环和各种 CUBLAS 调用。现在可以访问 CC 3.5 设备,我可以使用动态并行编写一个更高效的内核。但是,我想继续支持 CC
-gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35
我想继续生成支持这两种架构的单个二进制文件,但我想不出在主机代码中切换它的方法。 NVCC 肯定无法为主机 AFAIK 上的任何内容生成编译后的代码映像。
这不好(而且非常丑陋),因为为 CC
cudaGetDevice (¤t_device);
cudaGetDeviceProperties (¤t_device_properties, current_device);
if (current_device_properties.major < 3 && ... etc) {
...
}
else ...
__CUDACC__ 或 __CUDA_ARCH__ 在这里也没有用。
我的猜测是这是不可能的,我将不得不简单地开始编译单独的二进制文件并在预处理器中切换架构。但是,如果有人能想到什么,那就太好了。
【问题讨论】: