我有一些在.cpp文件中对cuSPARSE库的调用,这些调用在旧版工具包中不可用。为了支持旧版工具包的系统,我想使用编译器指令来编译不同的代码部分。特别地,我想使用CSR格式中的矩阵解决稀疏三角系统的问题,以供旧版工具包使用,并使用BSR格式供新版工具包使用。
问题是,在这个部分,我并没有使用nvcc编译任何实际的CUDA代码,只是进行库调用,因此不能使用nvcc宏获取版本信息。
在cuda.h中有一个__CUDA_API_VERSION的#define,但无论是否包含cuda.h,我都会在编译我的.cpp时得到0。
在这种情况下,我如何在编译时获取工具包版本信息?我正在CentOS 7上工作,并使用g++编译我的.cpp。
问题是,在这个部分,我并没有使用nvcc编译任何实际的CUDA代码,只是进行库调用,因此不能使用nvcc宏获取版本信息。
在cuda.h中有一个__CUDA_API_VERSION的#define,但无论是否包含cuda.h,我都会在编译我的.cpp时得到0。
在这种情况下,我如何在编译时获取工具包版本信息?我正在CentOS 7上工作,并使用g++编译我的.cpp。
cuda_runtime_api.h
,并使用其中包含的CUDART_VERSION
定义。8000
= CUDA 8.0。7050
= CUDA 7.5等。如果您在.cpp文件中使用cudaMalloc
/cudaMemcpy
,则通常会包括cuda_runtime_api.h
。 - Robert Crovella