利用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)

### GPU显存的作用 GPU显存的主要作用是用来存储图形数据计算过程中产生的临时数据。这些数据包括但不限于顶点坐标、纹理映射、像素颜色以及其他与图像渲染相关的中间结果[^1]。由于显存在物理位置上更接近于GPU核心,因此其访问速度远高于系统内存(RAM),从而显著提升了图形处理效率。 当运行需要大量并行计算的任务时,例如游戏中的复杂场景渲染或者科学计算中的矩阵运算,显存可以快速提供所需的数据给GPU的核心单元完成操作[^2]。这使得GPU能够在短时间内完成大量的浮点数运算,进而提高整体性能表现。 ### 显存的类型 目前主流使用的显存技术有多种不同的形式: #### GDDR (Graphics Double Data Rate) SDRAM 这是专门为图形应用优化的一种高速动态随机存取存储器标准系列之一,在现代独立显卡中最常见的是GDDR6版本。相比传统的SDR DRAM或DDR3/4 RAM来说,GDDR提供了更高的带宽以及更低延迟特性,非常适合用来满足当今高端视觉体验需求下的大数据量传输要求[^3]. 另外还有一种叫做HBM(High Bandwidth Memory),它代表了一种全新的堆叠式架构设计理念,通过将多层硅片垂直连接起来形成一个紧密的整体结构来实现极高的I/O接口密度,进一步突破传统封装方式所带来的瓶颈限制,为未来高性能计算机领域的发展奠定了坚实基础。 ```cpp // 示例代码展示如何查询NVIDIA CUDA设备上的可用显存量 #include <cuda_runtime.h> #include <iostream> int main() { int deviceCount; cudaGetDeviceCount(&deviceCount); for(int i=0;i<deviceCount;++i){ cudaSetDevice(i); size_t freeBytes,totalBytes; cudaMemGetInfo(&freeBytes,&totalBytes); std::cout << "Device "<<i<<": Free memory:"<<freeBytes/(float)(1<<20)<<" MB / Total memory:"<<totalBytes/(float)(1<<20)<<" MB"<<std::endl; } } ``` 此C++程序片段展示了利用CUDA API函数`cudaMemGetInfo()`获取当前活动GPU设备剩余容量的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值