当一个较新的(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的内容?
答案 0 :(得分:3)
部分答案:
至少对于较新的版本,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))