darknet 硬件软件环境的设置和检测

 

1. 设置gpu卡号

cuda_set_device(gpu_index);  // 通过给定gpu_index不同的值设置使用的显卡。
CHECK_CUDA(cudaSetDeviceFlags(cudaDeviceScheduleBlockingSync));  // 主机线程将阻塞,直到设备完成其工作。

/// <summary>
/// set the gpu used
/// </summary>
/// <param name="n">gpu index</param>
void cuda_set_device(int n)
{
    gpu_index = n;  // 全局变量
    cudaError_t status = cudaSetDevice(n);
    if(status != cudaSuccess) CHECK_CUDA(status);
}

2. 检查cuda和cudnn版本并获取显卡个数

void show_cuda_cudnn_info()
{
    int cuda_version = 0, cuda_driver_version = 0, device_count = 0;  // 初始化值
    CHECK_CUDA(cudaRuntimeGetVersion(&cuda_version));  // cuda version: 11.1. cuda_version = 11*1000+1*10 = 11010
    CHECK_CUDA(cudaDriverGetVersion(&cuda_driver_version));  // cuda_driver_version: 11.6. 11060
    fprintf(stderr, " CUDA-version: %d (%d)", cuda_version, cuda_driver_version);
    if(cuda_version > cuda_driver_version) fprintf(stderr, "\n Warning: CUDA-version is higher than Driver-version! \n"); // 安装的cuda必须小于系统支持的版本。
#ifdef CUDNN
    fprintf(stderr, ", cuDNN: %d.%d.%d", CUDNN_MAJOR, CUDNN_MINOR, CUDNN_PATCHLEVEL);  // 8 0 5
#endif  // CUDNN
#ifdef CUDNN_HALF  // 构建Tensor核心
    fprintf(stderr, ", CUDNN_HALF=1");
#endif  // CUDNN_HALF
    CHECK_CUDA(cudaGetDeviceCount(&device_count));  // 获取显卡设备个数device_count
    fprintf(stderr, ", GPU count: %d ", device_count);
    fprintf(stderr, " \n");
}

3. 检查opencv版本

show_opencv_info();

void show_opencv_info()
{
    std::cerr << " OpenCV version: " << CV_VERSION_MAJOR << "." << CV_VERSION_MINOR << "." << CVAUX_STR(CV_VERSION_REVISION) OCV_D
        << std::endl;
}

4. 检测gpu算力

char device_name[1024];
int compute_capability = get_gpu_compute_capability(net->gpu_index, device_name);

int get_gpu_compute_capability(int i, char *device_name)
{
    typedef struct cudaDeviceProp cudaDeviceProp;
    cudaDeviceProp prop;
    cudaError_t status = cudaGetDeviceProperties(&prop, i);
    CHECK_CUDA(status);
    if (device_name) strcpy(device_name, prop.name);  // gpu名称
    int cc = prop.major * 100 + prop.minor * 10;    // __CUDA_ARCH__ format. 8*100+6*10=860
    return cc;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值