假设我的机器具有计算能力 XX 和 YY 的 GPU。读完:
https://stackoverflow.com/a/35657430/1593077
我知道我可以像这样调用 nvcc:
nvcc \
-o myapp \
-gencode arch=compute_XX,code=sm_XX \
myapp.cu
或者像这样:
nvcc \
-o myapp \
-gencode arch=compute_XX,code=sm_XX \
-gencode arch=compute_YY,code=sm_YY \
myapp.cu
对于两个 GPU。但是 - 假设我想使用几年前我们得到的
arch=native
选项,而不是指定单独的值。它应该更容易、更直接,但是 - 我似乎无法正确理解:
$ nvcc -o myapp -gencode arch=native myapp.cu
nvcc fatal : Option '--generate-code arch=native', missing code
$ nvcc -o myapp -gencode arch=native,code=sm_89 myapp.cu
nvcc fatal : Unsupported gpu architecture 'native'
注意:使用 NVCC 的 CUDA 12.6' 版本。
实际上比这一切更容易。用途:
nvcc -o myapp -arch=native myapp.cu
没有
-gencode
争论。
请注意,正如 CUDA 编程指南 所述:
当指定
时,nvcc会检测系统上可见的GPU并为其生成代码,此选项不会生成PTX程序。如果系统上没有可见支持的 GPU,则会出现警告,并且将使用默认架构。-arch=native