`

CUDA-设备属性

    博客分类:
  • CUDA
阅读更多
struct cudaDeviceProp
{
  char   name[256];                  /**< 设备的ASCII标识 */
  size_t totalGlobalMem;             /**< 可用的全局内存量,单位字节 */
  size_t totalConstMem;             /**< 可用的常量内存量,单位字节 */
  size_t sharedMemPerBlock;          /**< 每个block可用的共享内存量,单位字节 */
  int    regsPerBlock;               /**< 每个block里可用32位寄存器数量 */
  int    warpSize;                   /**< 在线程warp块大小*/
  size_t memPitch;                   /**< 允许的内存复制最大修正,单位字节*/
  int    maxThreadsPerBlock;         /**< 每个block最大线程数量 */
  int    maxThreadsDim[3];           /**< 一block里每个维度最大线程量 */
  int    maxGridSize[3];             /**< 一格里每个维度最大数量 */
  int    clockRate;                  /**< 时钟频率,单位千赫khz */
  int    major;                      /**< 计算功能主版本号*/
  int    minor;                      /**< 计算功能次版本号*/
  size_t textureAlignment;           /**< 对齐要求的纹理 */
  int    deviceOverlap;              /**< 判断设备是否可以同时拷贝内存和执行内核。已过时。改用asyncEngineCount */
  int    multiProcessorCount;        /**< 设备上的处理器数量 */
  int    kernelExecTimeoutEnabled;   /**< 内核函数是否运行受时间限制*/
  int    integrated;                 /**< 设备是不是独立的 */
  int    canMapHostMemory;           /**< 设备能否映射主机cudaHostAlloc/cudaHostGetDevicePointer */
  int    computeMode;                /**< 计算模式,有默认,独占,禁止,独占进程(See ::cudaComputeMode) */
  int    maxTexture1D;               /**< 1D纹理最大值 */
  int    maxTexture2D[2];            /**< 2D纹理最大维数*/
  int    maxTexture3D[3];            /**< 3D纹理最大维数 */
  int    maxTexture1DLayered[2];     /**< 最大的1D分层纹理尺寸 */
  int    maxTexture2DLayered[3];     /**< 最大的2D分层纹理尺寸  */
  size_t surfaceAlignment;           /**< 表面的对齐要求*/
  int    concurrentKernels;          /**< 设备是否能同时执行多个内核*/
  int    ECCEnabled;                 /**< 设备是否支持ECC */
  int    pciBusID;                   /**< 设备的PCI总线ID */
  int    pciDeviceID;                /**< PCI设备的设备ID*/
  int    pciDomainID;                /**<PCI设备的域ID*/
  int    tccDriver;                  /**< 1如果设备是使用了TCC驱动的Tesla设备,否则就是0 */
  int    asyncEngineCount;           /**< 异步Engine数量 */
  int    unifiedAddressing;          /**< 设备是否共享统一的地址空间与主机*/
  int    memoryClockRate;            /**<峰值内存时钟频率,单位khz*/
  int    memoryBusWidth;             /**< 全局内存总线宽度,单位bit*/
  int    l2CacheSize;                /**< L2 cache大小,单位字节 */
  int    maxThreadsPerMultiProcessor;/**< 每个多处理器的最大的常驻线程 */
};

 示例:

 

#include "stdio.h"
#include <cuda_runtime.h>
int main(){
   cudaDeviceProp prop;
   int count;
   int i;
   cudaGetDeviceCount(&count);
   fprintf(stderr,"CudaDeviceNumber======%d\n",count);
   for(i=0;i<count;i++){
     cudaGetDeviceProperties(&prop,i);
     fprintf(stderr,"---General Infomation for device %d---\n",i);
     fprintf(stderr,"Name:  %s\n",prop.name);
     fprintf(stderr,"Total global mem: %ld\n",prop.totalGlobalMem);
     fprintf(stderr,"Total constant mem: %ld\n",prop.totalConstMem);
     fprintf(stderr,"Shared mem per mp: %ld\n",prop.sharedMemPerBlock);
     fprintf(stderr,"Threads in warp: %d\n",prop.warpSize);
     fprintf(stderr,"Max threads per block: %d\n",prop.maxThreadsPerBlock);
    }
  return 0;
}

  运行结果:

 fangbing@casis-node1:~/test$ nvcc readDeviceProp.cu -o readDeviceProp

fangbing@casis-node1:~/test$ ./readDeviceProp 

CudaDeviceNumber======4

---General Infomation for device 0---

Name:  Tesla K80

Total global mem: 12079136768

Total constant mem: 65536

Shared mem per mp: 49152

Threads in warp: 32

Max threads per block: 1024

---General Infomation for device 1---

Name:  Tesla K80

Total global mem: 12079136768

Total constant mem: 65536

Shared mem per mp: 49152

Threads in warp: 32

Max threads per block: 1024

---General Infomation for device 2---

Name:  Tesla K80

Total global mem: 12079136768

Total constant mem: 65536

Shared mem per mp: 49152

Threads in warp: 32

Max threads per block: 1024

---General Infomation for device 3---

Name:  Tesla K80

Total global mem: 12079136768

Total constant mem: 65536

Shared mem per mp: 49152

Threads in warp: 32

Max threads per block: 1024

 

分享到:
评论

相关推荐

    CUDA-Fortran-Book_nvidia_CUDA-Fortran_

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

    cuda-install.rar_cuda

    在项目属性中配置编译器和链接器选项,例如选择对应的设备架构版本、调整优化级别等。 6. **编写CUDA代码** 在新建的CUDA项目中,你可以创建源文件(如`.cu`文件),并编写CUDA C/C++代码。CUDA代码包含宿主代码...

    Cuda-Web-Page

    3. CUDA API:熟悉CUDA的编程接口,如cudaMalloc、cudaMemcpy和cudaFree等,以及错误处理和设备管理。 4. 性能调优:学习如何通过优化kernel代码、减少数据传输、使用适当的同步机制等方法来提高CUDA程序的性能。 ...

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

    - `cudaGetDeviceCount`:获取系统中可用的CUDA设备数量。 - `cudaSetDevice`:指定应用程序将使用的CUDA设备。 - `cudaGetDevice`:查询当前设置的CUDA设备。 - `cudaGetDeviceProperties`:获取指定设备的属性...

    CUDA-raytracer

    6. **CUDA编程**:在CUDA中,程序员通过定义设备函数(在GPU上运行的函数)和主机函数(在CPU上运行的函数)来实现并行计算。CUDA内核(kernels)是执行在GPU上的多线程代码,每个线程处理场景中的一部分数据。内存...

    cuda参考手册-cuda技术的描述

    用途:获取指定CUDA设备的属性信息,如最大共享内存大小、最大线程数量等。这对于优化程序性能至关重要。 **1.1.5 cudaChooseDevice** 用途:根据一系列标准选择最合适的CUDA设备。这对于实现跨平台的高效编程非常...

    CUDA-Raytracer:用CUDA编写的简单光线跟踪器,将其输出保存为.ppm文件,其中包括CPU版本供参考

    1. **CUDA C++**: 这是一种扩展了标准C++的编程语言,用于编写可以在CUDA设备(即NVIDIA GPU)上运行的内核(kernel)。CUDA C++代码包含主机代码(在CPU上运行)和设备代码(在GPU上运行)。 2. **CUDA内核**: 内核...

    CUDA参考手册 CUDA

    - `cudaGetDeviceProperties`:获取CUDA设备的属性,如设备名称、最大内存、计算能力等,这些信息有助于优化代码性能。 - `cudaChooseDevice`:根据给定的参数(如内存大小、计算能力等)选择一个最适合的设备。 ...

    Hands-On-GPU-Accelerated-Computer-Vision-with-OpenCV-and-CUDA:Packt发布的具有OpenCV和CUDA的动手GPU加速计算机视觉

    本书涵盖了以下令人兴奋的功能:了解如何从CUDA程序访问GPU设备的属性和功能 了解如何加快搜索和排序算法 检测图像中的线条和圆形等形状 使用算法探索对象跟踪和检测 在Jetson TX1中使用不同的视频分析技术处理视频...

    生锈的 CUDA 包装器

    目前认为安全的事物示例:从未初始化的 GPU 缓冲区读取到主机内存一些无效的libcuda操作会导致libcuda停止接受任何 API 调用设置可能对整个设备产生副作用的各种属性写入只读设备内存支持的功能设备管理上下文管理...

    CUDA参考手册2.0

    - **cudaGetDeviceCount**: 返回系统中可用的CUDA设备数量。 - **cudaSetDevice**: 设置当前线程使用的设备ID。 - **cudaGetDevice**: 获取当前线程正在使用的设备ID。 - **cudaGetDeviceProperties**: 返回指定设备...

    CUDA_Runtime_API

    - **参数**:接收一组设备属性和选择标准作为输入。 - **cudaDeviceGetAttribute**:此函数用于查询特定设备的属性值。 - **参数**:需要指定属性类型和设备索引。 - **cudaDeviceGetByPCIBusId**:通过PCI总线ID...

    cuda7.5+VS2013工程

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

    cuda参考手册

    **参数:** `struct cudaDeviceProp *prop` - 用于存储设备属性的结构体指针;`int device` - 设备索引号。 **返回值:** 如果成功则返回CUDA_SUCCESS;如果失败则返回相应的错误码。 **示例代码:** ```c++ ...

    CUDA.rar_cuda

    5. **CUDA C++编程语法**:CUDA C++扩展了C++,提供了设备和主机之间的数据迁移、设备函数声明等特性。 理解并熟练运用这些概念,你就能编写出高效利用GPU并行计算能力的CUDA程序。在实践中,还要注意调试和优化...

    NVIDIA CUDA计算统一设备架构参考手册2.0

    - `struct cudaDeviceProp *prop`:指向一个cudaDeviceProp结构体的指针,用来存储设备属性。 - `int device`:要获取属性的设备索引。 **返回值**:如果成功,返回cudaSuccess;如果失败,则返回错误码。 **示例...

    如何在VS2010 + QT中调用CUDA test_qt_cuda.rar

    5. **宿主代码与设备代码的交互**:在主程序(如`main.cpp`)中,使用CUDA API调用kernel并在主机与设备之间传输数据: ```cpp #include &lt;cuda_runtime.h&gt; #include "cuda_kernels.cu" int main() { int *h_a...

    cuda runtime api使用手册

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

    手把手教你CUDA6.0如何在VS2010配置

    记住,CUDA 程序包含两部分:主机代码(.cpp 文件)和设备代码(.cu 文件),设备代码在 GPU 上执行,主机代码在 CPU 上执行。理解并熟练掌握 CUDA 的编程模型、内存管理、同步机制和流(stream)是编写高效 CUDA ...

    CUDA 2.0参考手册 (中文版)

    - **cudaGetDeviceCount**: 获取系统中可用的CUDA设备数量。这对于了解当前硬件配置非常重要,尤其是在多GPU环境下。 - **cudaSetDevice**: 设置当前线程使用的CUDA设备。此函数允许用户指定特定的GPU来执行后续的...

Global site tag (gtag.js) - Google Analytics