[CUDA]CUDA编程实战一——了解CUDA及获取GPU信息

Posted wildkid1024

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CUDA]CUDA编程实战一——了解CUDA及获取GPU信息相关的知识,希望对你有一定的参考价值。

当你看到这篇博客的时候,我相信你已对CUDA有所了解,CUDA是针对于GPU的一种C/C++扩展库,使用cuda可以很方便地进行并行编程。

那么今天第一讲便是如何获取GPU的各种参数,cudaDeviceProp是cuda库中已经封装好的结构体,通过调用cudaGetDeviceProperties(&devProp, i);可以得到cuda的各个参数。

#include "device_launch_parameters.h"
#include <iostream>

int main()
{
    int deviceCount;
    cudaGetDeviceCount(&deviceCount);
    for(int i=0;i<deviceCount;i++)
    {
        cudaDeviceProp devProp;
        cudaGetDeviceProperties(&devProp, i);
        std::cout << "使用GPU device " << i << ": " << devProp.name << std::endl;
        std::cout << "设备全局内存总量: " << devProp.totalGlobalMem / 1024 / 1024 << "MB" << std::endl;
        std::cout << "SM的数量:" << devProp.multiProcessorCount << std::endl;
        std::cout << "每个线程块的共享内存大小:" << devProp.sharedMemPerBlock / 1024.0 << " KB" << std::endl;
        std::cout << "每个线程块的最大线程数:" << devProp.maxThreadsPerBlock << std::endl;
        std::cout << "设备上一个线程块(Block)种可用的32位寄存器数量: " << devProp.regsPerBlock << std::endl;
        std::cout << "每个EM的最大线程数:" << devProp.maxThreadsPerMultiProcessor << std::endl;
        std::cout << "每个EM的最大线程束数:" << devProp.maxThreadsPerMultiProcessor / 32 << std::endl;
        std::cout << "设备上多处理器的数量: " << devProp.multiProcessorCount << std::endl;
        std::cout << "======================================================" << std::endl;     
        
    }
    return 0;
}

运行结果

我们使用了4块GPU,这里只展示了第三块,包含了GPU设备的各种信息。

以上是关于[CUDA]CUDA编程实战一——了解CUDA及获取GPU信息的主要内容,如果未能解决你的问题,请参考以下文章

[CUDA]CUDA编程实战三——矩阵加法的实现

一文了解GPU并行计算CUDA

GPU高性能运算之CUDA,CUDA编程报错,大牛帮忙解答啊

CUDA共享内存的使用示例

基于Visual Studio 2015的CUDA编程:基本配置

基于Visual Studio 2015的CUDA编程:基本配置