利用CUDA查看多张显卡可用显存和总显存大小

利用CUDA查看每张显卡上的可用显存大小和总的显存大小,参考了博文1博文2,主要使用的函数是cudaMemGetInfo(),cudaGetDeviceCount()和cudaSetDevice()

#include <cuda.h>
#include <stdio.h>
#include <cuda_runtime.h>
#include <device_launch_parameters.h>

int main()
{
	size_t avail;
	size_t total;
	int deviceCount=0;
	cudaGetDeviceCount(&deviceCount);              // 用deviceCount获取显卡总数量
	for(int i_dev=0;i_dev<deviceCount;i_dev++)
	{
		cudaSetDevice(i_dev);		               // 使用第i_dev张显卡作为使用的显卡
		cudaMemGetInfo(&avail, &total);            // 获取可用和总显存大小
		printf("Device %d Memeory:\n",i_dev);
		printf("Avaliable Memery = %dm   Total Memory = %dm\n", int(avail/1024/1024), int(total / 1024 / 1024));
		printf("\n");		
	}	
}

博文2中使用的是 cuInit(),cuMemGetInfo()函数,在linux下编译的时候需要加上 -lcuda 不然会报错,这篇博文的代码好像有点问题,就是第一个cuMemGetInfo()获取的数据都为0。

size_t 获取的显卡内存单位是字节(B),数据大小以及超过int的范围了,要么用long long型接收显存大小的数据,要么先处理转换成兆字节(MB)

    原文作者:lumping
    原文地址: https://blog.csdn.net/lumping/article/details/113703530
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞