CUDA开发:了解设备属性

  原文链接

  今天介绍一下CUDA设备的相关属性,只有熟悉了硬件是相关属性,是怎么工作的,就能写出更适合硬件工作的代码。cudaDeviceProp这个结构体记录了设备的相关属性。

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

  通过cudaGetDeviceProperties()得到设备属性,cudaGetDeviceCount()来获取设备的个数,通过cudaChooseDevice()选择符合条件的设备,通过cudaGetDevice()可以得到当前的设备,通过cudaSetDevice()设置选择设备,SLI技术支持多个GPU。

  更多内容请点击:

  CUDA专区:http://cuda.it168.com/

  CUDA论坛:http://cudabbs.it168.com/

时间: 2024-09-30 06:38:46

CUDA开发:了解设备属性的相关文章

CentOS下查看电脑硬件设备属性命令

如何在linux下查看电脑硬件设备属性 # uname -a               # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue   # 查看操作系统版本 # cat /proc/cpuinfo      # 查看CPU信息 # hostname               # 查看计算机名 # lspci -tv              # 列出所有PCI设备 # lsusb -tv              # 列出所有USB设备 # lsmod

T-SQL开发 - 10.IDENTITY属性使用小结

从SQL Server 2012开始有了Sequence,简单用列如下: CREATE SEQUENCE TestSeq START WITH 1 INCREMENT BY 1; SELECT NEXT VALUE FOR TestSeq AS NextValue; 在这之前,表中生成序列号大多都是借助IDENTITY列属性,当然也有一些时候,是在自定义表中,自己维护序列号. 一. 创建IDENTITY列 if OBJECT_ID('test','U') is not null     drop

iPone应用开发 UIView 常用属性和方法

iPone应用程序开发 UIView常用属性和方法 常用属性 alpha 视图的透明度0.0f - 1.0f backgroundColor 视图的背景颜色 subviews 子视图的集合 hidden 视图是否隐藏 tag 视图的唯一标示符,是一个整形数据 superview 视图的父视图 multipleTouchEnabled 是否开启多点触控 userInteractionEnable 是否响应触摸事件 常用方法 - (void)removeFromSuperview; //从父视图中删

驱动开发之 设备读写方式:直接方式

上一节介绍了缓冲区方式读写,这一节咱们来看看直接方式读写设备. 1. 直接方式读写设备,操作系统会将用户模式下的缓冲区锁住,然后操作系统将这段缓冲区在内核模式地址再次映射一遍.这样,用户模式的缓冲区和内核模式的缓冲区指向的是同一区域的物理内存.无论操作系统如何切换进程,内核模式地址都保持不变. 创建好设备IoCreateDevice后,需要设置DO_DIRECT_IO,  pDevObj->Flags |= DO_DIRECT_IO. 2. 这里涉及到内存描述符表(MDL) MDL结构的声明如下

Windows平台CUDA开发之前的准备工作

CUDA是NVIDIA的GPU开发工具,目前在大规模并行计算领域有着广泛应用. windows平台上面的CUDA开发之前,最好去NVIDIA官网查看说明,然后下载相应的driver, ToolKits等等.如果你下载最新版本的CUDA7.0,里面其实已经包含了driver及Tool kits. 特别要注意:目标最高版本为CUDA7.0,仅支持64位系统(32位没法安装CUDA 7.0 Tool Kits),另外,VS编译平台最低要求是VS2010. So,那些依然用VC6或者VS2008的就别犹

firefox os 手机开发之设备调用

1)话筒 权限:telephony api:navigator.moztelephony 链接参考:https://wiki.mozilla.org/WebAPI/WebTelephony 2) 扬声器 权限:audio channels选项:["normal", "content",""notification", "alarm", "telephony","ringer"]

Linux 设备驱动开发 —— platform设备驱动应用实例解析

前面我们已经学习了platform设备的理论知识Linux 设备驱动开发 -- platform 设备驱动 ,下面将通过一个实例来深入我们的学习. 一.platform 驱动的工作过程 platform模型驱动编程,platform 驱动只是在字符设备驱动外套一层platform_driver 的外壳. 在一般情况下,2.6内核中已经初始化并挂载了一条platform总线在sysfs文件系统中.那么我们编写platform模型驱动时,需要完成两个工作: a -- 实现platform驱动 架构就

Kinect 开发 &mdash;&mdash; 硬件设备解剖

Kinect for Xbox: 360 不支持"近景模式" 三只眼睛 -- 红外投影机,RGB摄像头,红外深度投影头  -- 色彩影像中的每个像素分别与深度影像中的一个像素对应 四只耳朵 -- L形布局的麦克风阵列 -- 过滤背景噪声,定位声源 -- 根据麦克风阵列接听声音的时间差来判断声源方向 Moving Touch 传动马达电动机 -- 用于仰角控制 PS 1080 Soc 芯片 -- 深度图像获取能力   Xbox 360 (有效视距  1.2 ~~ 3.5)  最近距离 -

软件构造 第一章第二节 软件开发的质量属性

?软件构造 第一章第二节 软件开发的质量属性 1.软件系统质量指标 External quality factors affect users 外部质量因素影响用户 Internal quality factors affect the software itself and its developers 内部质量因素影响软件本身和它的开发者 External quality results from internal quality 外部质量取决于内部质量 外部属性: 正确性:按照预先定义的"