当较新(CUDA 9)版本的 nvcc 遇到 __CUDACC_VER__
时,它会放弃并告诉您类似以下内容:
/usr/local/cuda/include/crt/common_functions.h:64:24: error: token ""__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."" is not valid in preprocessor expressions
#define __CUDACC_VER__ "__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."
那么,如何将 __CUDACC_VER__
的使用转换为同时适用于旧版和新版 NVCC 的内容?
最佳答案
部分答案:
至少对于较新的版本,NVCC documentation告诉我们(在第 3 页)公式是什么:
__CUDACC_VER__ = __CUDACC_VER_MAJOR__ * 10000 + __CUDACC_VER_MINOR__ * 100 + __CUDACC_VER_BUILD__
因此,例如,检查 CUDA 7.5 或更高版本的 nvcc 意味着检查
(__CUDACC_VER__ > 70500)
以及您要编写的三元组值
(__CUDACC_VER_MAJOR__ > 7) or ((__CUDACC_VER_MAJOR__ == 7) and (__CUDACC_VER_MINOR__ >= 5))
相反。
关于cuda - 如何将 __CUDACC_VER__ 值转换为 MAJOR、MINOR、BUILD 三元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50648671/