CUDA Driver API 获取驱动版本设备信息
Posted 洪流之源
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CUDA Driver API 获取驱动版本设备信息相关的知识,希望对你有一定的参考价值。
主要包括如下功能:
1. cuda初始化
CUresult CUDAAPI cuInit(unsigned int Flags);
这里的flags目前必须给0,对于cuda的所有函数,必须先调用cuInit,否则其他API都会返CUDA_ERROR_NOT_INITIALIZED,可参考链接:
https://docs.nvidia.com/cuda/archive/11.2.0/cuda-driver-api/group__CUDA__INITIALIZE.html
2. 获取驱动版本
CUresult CUDAAPI cuDriverGetVersion(int *driverVersion);
获取当前cuda驱动的版本
3. 获取设备信息
CUresult CUDAAPI cuDeviceGetName(char *name, int len, CUdevice dev);
获取当前设备信息
code:
// CUDA驱动头文件cuda.h
#include <cuda.h>
#include <stdio.h>
#include <string.h>
// 很明显,这种代码封装方式,更加的便于使用
//宏定义 #define <宏名>(<参数表>) <宏体>
#define checkDriver(op) __check_cuda_driver((op), #op, __FILE__, __LINE__)
bool __check_cuda_driver(CUresult code, const char* op, const char* file, int line)
if(code != CUresult::CUDA_SUCCESS)
const char* err_name = nullptr;
const char* err_message = nullptr;
cuGetErrorName(code, &err_name); // 获取错误代码的字符串
cuGetErrorString(code, &err_message); // 获取错误代码的字符串描述
printf("%s:%d %s failed. \\n code = %s, message = %s\\n", file, line, op, err_name, err_message);
return false;
return true;
int main()
/*
cuInit(int flags), 这里的flags目前必须给0;
对于cuda的所有函数,必须先调用cuInit,否则其他API都会返回CUDA_ERROR_NOT_INITIALIZED
https://docs.nvidia.com/cuda/archive/11.2.0/cuda-driver-api/group__CUDA__INITIALIZE.html
*/
checkDriver(cuInit(0));
/*
测试获取当前cuda驱动的版本
显卡、CUDA、CUDA Toolkit
1. 显卡驱动版本,比如:Driver Version: 460.84
2. CUDA驱动版本:比如:CUDA Version: 11.2
3. CUDA Toolkit版本:比如自行下载时选择的10.2、11.2等;这与前两个不是一回事, CUDA Toolkit的每个版本都需要最低版本的CUDA驱动程序
三者版本之间有依赖关系, 可参照https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
nvidia-smi显示的是显卡驱动版本和此驱动最高支持的CUDA驱动版本
*/
int driver_version = 0;
if(!checkDriver(cuDriverGetVersion(&driver_version))) // 获取驱动版本
return -1;
printf("Driver version is %d\\n", driver_version); // 若driver_version为11020指的是11.2
// 测试获取当前设备信息
char device_name[100];
CUdevice device = 0;
checkDriver(cuDeviceGetName(device_name, sizeof(device_name), device)); // 获取设备名称、型号如:Tesla V100-SXM2-32GB
printf("Device %d name is %s\\n", device, device_name);
return 0;
以上是关于CUDA Driver API 获取驱动版本设备信息的主要内容,如果未能解决你的问题,请参考以下文章