【发布时间】:2016-06-22 14:21:50
【问题描述】:
我在 .cpp 文件中对 cuSPARSE 库进行了一些调用,这些调用在旧工具包中不可用。为了支持具有较旧工具包的系统,我想使用编译器指令编译不同的代码部分。特别是,我想使用 CSR 格式的矩阵用于旧工具包和 BSR 格式用于新工具包来解决稀疏三角系统。
问题是,我在本节中没有使用 nvcc 编译任何实际的 CUDA 代码,只是进行库调用,因此获取版本信息的 nvcc 宏不可用。
在cuda.h中有一个__CUDA_API_VERSION的#define,但是在编译我的.cpp时它是0,不管我是否包含cuda.h。
在这种情况下,如何在编译时获取有关工具包版本的信息?我正在使用 CentOS 7 并使用 g++ 编译我的 .cpp。
【问题讨论】:
-
一种可能的方法:在您的 .cpp 文件中包含
cuda_runtime_api.h,并使用其中包含的CUDART_VERSION定义。8000= CUDA 8.0。7050= CUDA 7.5 等。例如,如果您在 .cpp 文件中使用cudaMalloc/cudaMemcpy,则可能包含cuda_runtime_api.h -
@RobertCrovella 成功了!谢谢!