较新版本的 CMake(3.18 及更高版本)“了解”CUDA 代码编译目标的 CUDA 架构的选择。目标有一个CUDA_ARCHITECTURES属性,设置后会生成适当的-gencode arch=whatever,code=whatever
为您提供编译选项。如果您不设置此值,您甚至会收到警告:
CMake Error in CMakeLists.txt:
CUDA_ARCHITECTURES is empty for target "my_cuda_app".
默认情况下,该目标属性被初始化为CMAKE_CUDA_ARCHITECTURES. But CMAKE_CUDA_ARCHITECTURES
其本身未初始化为任何内容(!)
我们如何让 CMake 自动检测适当的值CUDA_ARCHITECTURES
或全球CMAKD_CUDA_ARCHITECTURES
?也就是说,使用系统上安装的 GPU 的架构?
在即将推出的 CMake 3.24 中,您将能够编写:
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES native)
这将建立目标tgt
用于配置时系统上可用的 GPU 的(具体)CUDA 架构。
对于较新版本的 CUDA(11.5 及更高版本),将通过native
到 nvcc 和其他可执行文件;对于旧版本,它将自动检测哪些架构是“本机”架构。
Caveat:这实际上并没有为您提供架构列表(例如,在您的 CMake 代码中进行迭代。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)