`
暴风雪
  • 浏览: 390797 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[CUDA]GPU设备属性的查询和使用

    博客分类:
  • cuda
 
阅读更多

要获得GPU设备的数量,在cuda中是通过cudaGetDeviceCount(int*)来实现的。

对于每个GPU设备。cuda使用cudaDeviceProp类型来保存设备信息。cudaDeviceProp的详细内容如下



 
 我们通过cudaGetDeviceProperties(cudaDeviceProp* prop,int i)来获取第i块设备属性。具体参考代码如下

#include<cuda_runtime.h>
#include<windows.h>
#include<iostream>
using namespace std;

int main(){
	int count;
	cudaDeviceProp prop;
	cudaGetDeviceCount(&count);
	cout <<"当前计算机包含GPU数为"<< count << endl;
	for (int i = 0; i < count; i++){
		cudaGetDeviceProperties(&prop, i);
		cout << "当前访问的是第" << i << "块GPU属性" << endl;
		cout << "当前设备名字为" << prop.name << endl;
		cout << "GPU全局内存总量为" << prop.totalGlobalMem << endl;
		cout << "单个线程块中包含的线程数最多为" << prop.maxThreadsPerBlock << endl;

	}
	getchar();
	return 0;
}

在cuda中一般使用cudaChooseDevice()来选取符合标准的硬件cudaChooseDevice()返回距离给定硬件标准值最近的硬件编号。我们把这个编号传递给cudaSetDevice(),然后所有的设备操作都在这个设备上进行。

 

#include<cuda_runtime.h>
#include<windows.h>
#include<iostream>
using namespace std;

int main(){
	int count;
	cudaDeviceProp prop;
	cudaGetDeviceCount(&count);
	cout <<"当前计算机包含GPU数为"<< count << endl;
	for (int i = 0; i < count; i++){
		cudaGetDeviceProperties(&prop, i);
		cout << "当前访问的是第" << i << "块GPU属性" << endl;
		cout << "当前设备名字为" << prop.name << endl;
		cout << "GPU全局内存总量为" << prop.totalGlobalMem << endl;
		cout << "单个线程块中包含的线程数最多为" << prop.maxThreadsPerBlock << endl;

	}

	int dev;
	memset(&prop, 0, sizeof(prop));
	prop.major = 1;
	prop.minor = 3;
	cudaChooseDevice(&dev, &prop);
	cout << "距离设备版本1.3最接近的设备编号为" << dev << endl;
	cudaSetDevice(dev);
	getchar();
	return 0;
}

 

  • 大小: 471.1 KB
分享到:
评论

相关推荐

    CUDA——了解和使用共享内存

    2. **性能测试**:尝试不同的执行配置,并使用CUDA提供的API(如`cudaGetDeviceCount()`和`cudaGetDeviceProperties()`)来获取设备属性,从而找到最优配置。 3. **自动配置**:编写代码使得应用程序能够在安装时...

    《GPU高性能编程 CUDA实战》/《CUDA By Example》中的book.h

    8. **设备查询和选择**: 使用`cudaDeviceProp`结构体可以获取GPU的属性,并根据应用需求选择合适的设备进行计算。 9. **CUDA库的使用**: NVIDIA还提供了许多CUDA库,如CuBLAS(线性代数)、CuFFT(快速傅里叶变换)...

    CUDA参考手册 CUDA

    CUDA参考手册是开发者理解和使用CUDA API的重要资源,提供了详细的函数介绍和使用方法。以下是手册中涉及的一些关键知识点: 1. **设备管理(Device Management)** - `cudaGetDeviceCount`:该函数用于获取系统中...

    cuda runtime api使用手册

    - **设备属性**:使用`cudaDeviceGetAttribute`获取诸如计算能力、全局和共享内存大小等设备属性。 - **设备限制**:`cudaDeviceGetLimit`和`cudaDeviceSetLimit`用于查询和设置设备的资源使用限制。 - **设备同步**...

    GPU并行使用Fortran

    本文将详细介绍如何使用Fortran在GPU上进行并行处理,并基于Portland Group (PGI) 提供的CUDA Fortran编程指南和参考文档展开讨论。 #### 二、CUDA Fortran概述 CUDA Fortran是PGI为CUDA平台开发的一套工具集,...

    计算统一设备架构---NVIDIA CUDA

    NVIDIA CUDA是NVIDIA公司推出的一种并行计算平台和编程模型,它允许开发人员利用图形处理器(GPU)的强大计算能力来执行通用计算任务。CUDA计算统一设备架构(Compute Unified Device Architecture)是其核心技术,...

    GPU属性测试

    要查询GPU属性,可以使用各种工具,例如NVIDIA控制面板、AMD Radeon Software或者第三方软件如GPU-Z。这些工具能提供详细的GPU信息,包括品牌、型号、驱动版本以及实时的温度、负载和电压数据。 在"GPU_Properties_...

    VC下CUDA使用详细介绍

    CUDA(Compute Unified Device Architecture)是由NVIDIA推出的一种并行计算平台和编程模型,它允许开发者利用GPU(图形处理器)的强大计算能力进行高性能计算。在Visual C++(简称VC)环境下,我们可以利用CUDA库来...

    最新版CUDA7.5示例代码(1)

    1. **初始化CUDA**:在CUDA程序开始时,需要调用`cudaSetDevice`函数选择要使用的GPU设备。如果没有指定,CUDA将默认选择第一块可用的GPU。 2. **获取设备属性**:然后,我们创建一个`cudaDeviceProp`结构体实例,...

    cuda 1.1 的中文版使用手册

    CUDA 技术由 NVIDIA 公司研发,其核心理念是将图形处理器(GPU)作为一种高效的数据并行计算设备来使用。传统上,GPU 主要用于图形渲染,但 CUDA 将其强大的并行处理能力引入到通用计算领域,为科学家和工程师提供了...

    CUDA-Fortran-Book_nvidia_CUDA-Fortran_

    CUDA Fortran引入了设备和主机的概念,设备指的是GPU,而主机则指CPU。程序员需要明确指定哪些代码段将在GPU上运行,这通常通过定义`device`和`host`属性来实现。 接着,CUDA Fortran的关键概念包括线程块和网格。...

    CUDA5.0安装

    - 验证CUDA安装是否成功的一个方法是运行样本设备查询程序,该程序会展示GPU的属性和性能测试结果。 CUDA 5.0安装指南中还提供了两个重要的示例程序的结果: - CUDA设备查询程序的正确输出结果,以验证GPU的识别和...

    C#调用GPU计算案例

    CUDA kernel函数使用特殊注解`__global__`,并且可以访问设备全局内存、共享内存等GPU资源。 2. **编译CUDA代码**:使用CUDA Toolkit中的nvcc编译器将源代码编译为DLL。这一步会生成一个包含GPU可执行代码的库文件...

    CUDA_VS_Wizzard cuda的VS插件

    5. **CUDA运行时API**:一组库函数,用于管理设备、分配内存、复制数据以及启动和同步kernels。 通过CUDA_VS_Wizard,开发者可以在Visual Studio中直接创建CUDA工程,设置CUDA属性,编写CUDA代码,并在IDE内调试。...

    C# 运用emgucv调用gpu,推理yolov7和yolov7-tiny。darknet版本80分类原始weights和cfg

    3. CUDA和cuDNN:CUDA是NVIDIA提供的用于GPU编程的工具包,cuDNN是加速深度神经网络计算的库,两者都是在GPU上运行Darknet所必需的。 接下来,按照以下步骤设置和运行模型: 1. 配置EmguCV:确保安装了正确的EmguCV...

    基于GPU的地震属性提取.pdf

    本文旨在深入探讨如何利用GPU加速地震属性提取的过程,以及CUDA编程平台在其中的关键作用和实际应用效果。 GPU原本是为图形渲染设计,但随着其计算能力的不断增强,特别是NVIDIA公司自1999年以来推出的一系列高性能...

    CUDA_Runtime_API.pdf

    设备管理(Device Management)是CUDA Runtime API中非常重要的一个部分,它允许开发者查询GPU的属性、设置和获取设备限制、管理GPU设备的选择和初始化等。例如,cudaGetDeviceCount函数可以返回系统中可用的GPU数量...

    cuda7.5+VS2013工程

    5. **编写CUDA代码**:在源文件中,使用`.cu`扩展名编写CUDA代码,可以包含主机代码(C++)和设备代码(CUDA)。例如,创建一个简单的CUDA程序,定义一个设备函数并在主机代码中调用。 ```cpp // hello_world.cu #...

Global site tag (gtag.js) - Google Analytics