文章目录
1.背景
使用tensorRT进行yolov5的目标识别时,遇到模型算力与显卡不匹配的问题,因此想到通过获取显卡的算力来加载不同的模型来解决这个问题。
2.通过cuda api获取算力
extern __host__ __cudart_builtin__ cudaError_t CUDARTAPI cudaGetDeviceProperties(struct cudaDeviceProp *prop, int device);
prop:返回cuda的properties,包括capability的两个值major和minor
device:显卡编号,一般单显卡为0
代码:
std::string Yolov5::GetGpuCapability(void)
{
cudaDeviceProp deviceProp;
cudaError error = cudaGetDeviceProperties(&deviceProp, DEVICE);
if (error != cudaSuccess) {
printf("cudaGetDeviceProperties returned error code %d, line(%d)\n", error,
__LINE__);
exit(EXIT_FAILURE);
}
printf("GPU Device %d: \"%s\" with compute capability %d.%d\n\n", DEVICE,
deviceProp.name, deviceProp.major, deviceProp.minor);
char cap[64] = { 0 };
sprintf(cap, "%d%d", deviceProp.major, deviceProp.minor);
std::string ret(cap);
return ret;
}