CUDA演示套件

CUDA演示套件的参考指南。

1. 简介

CUDA演示套件包含一系列预构建的使用CUDA的应用程序。这些应用程序展示了NVIDIA GPU的功能特性与技术细节。

2. 演示示例

以下是演示套件中包含的示例。

2.1. deviceQuery

该应用程序枚举系统中存在的CUDA设备的属性,并以人类可读的格式显示它们。

2.2. vectorAdd

该应用程序是一个非常基础的演示,实现了逐元素的向量加法。

2.3. 带宽测试

该应用程序提供GPU的内存拷贝带宽以及跨PCI-e总线的内存拷贝带宽测量功能。它能够测量设备到设备拷贝带宽、主机到设备拷贝带宽(包括可分页内存和页锁定内存)、以及设备到主机拷贝带宽(包括可分页内存和页锁定内存)。

参数:

Usage:  bandwidthTest [OPTION]...
Test the bandwidth for device to host, host to device, and device to device transfers

Example:  measure the bandwidth of device to host pinned memory copies in the range 1024 Bytes to 102400 Bytes in 1024 Byte increments
./bandwidthTest --memory=pinned --mode=range --start=1024 --end=102400 --increment=1024 --dtoh

选项

说明

–help

显示帮助菜单

–csv

以CSV格式输出结果

–device=[deviceno]

all

0,1,2,…,n

指定要使用的设备

计算所有设备的累计带宽

指定要使用的特定设备

–memory=[MEMMODE]

pageable

pinned

指定使用的内存模式

可分页内存

不可分页系统内存

–mode=[MODE]

quick

range

shmoo

指定使用的模式

执行快速测量

测量用户指定范围的值

对较大范围的值进行密集扫描

–htod

测量主机到设备的传输

–dtoh

测量设备到主机的数据传输

–dtod

测量设备到设备的传输

–wc

将固定内存分配为写合并模式

–cputiming

强制始终使用基于CPU的计时

范围模式选项

–start=[SIZE]

–end=[SIZE]

–increment=[SIZE]]


起始传输大小(字节)

结束传输大小(字节)

增量大小(字节)

2.4. busGrind

提供系统中GPU之间点对点内存带宽以及固定与非固定内存带宽的详细统计信息。

参数:

选项

说明

-h

打印使用说明

-p [0,1]

启用或禁用固定内存测试(默认开启)

-u [0,1]

启用或禁用非固定内存测试(默认关闭)

-e [0,1]

启用或禁用支持点对点(p2p)的内存测试(默认关闭)

-d [0,1]

启用或禁用p2p内存测试(默认关闭)

-a

启用所有测试

-n

禁用所有测试

Order of parameters matters.
Examples:
    ./BusGrind -n -p 1 -e 1   Run all pinned and P2P tests
    ./BusGrind -n -u 1        Runs only unpinned tests
    ./BusGrind -a             Runs all tests (pinned, unpinned, p2p enabled, p2p disabled)

2.5. nbody

本演示在CUDA中高效地实现了引力N体模拟的全配对计算。如果单台PC配备多块GPU,该模拟可跨多个GPU进行扩展。在命令行中添加“-numbodies=粒子数量”参数可设置模拟中的粒子总数,添加“-numdevices=N”参数将使示例程序使用N个设备(若可用)进行模拟。在此模式下,所有粒子的位置和速度数据将通过"zero copy"技术从系统内存读取,而非设备内存。对于少量设备(4个或更少)和足够多的粒子数量,带宽不会成为瓶颈,因此我们能在这些设备上实现强大的扩展性。

参数:

选项

说明

-fullscreen

在全屏模式下运行n-body模拟

-fp64

在模拟中使用双精度浮点数值

-hostmem

将模拟数据存储在主机内存中

-benchmark

运行基准测试以测量性能

-numbodies=N

模拟中运行的物体数量(>=1)

-device=d

其中d=0,1,2…表示要使用的CUDA设备编号

-numdevices=i

其中i=(CUDA设备数量>0)表示用于模拟的设备数量

-compare

比较在默认GPU和CPU上各运行一次的模拟结果

-cpu

在CPU上运行n-body模拟

-tipsy=file.bin

加载一个tipsy模型文件用于模拟

2.6. oceanFFT

这是一个图形演示,使用CUFFT库模拟海洋高度场,并通过OpenGL渲染结果。

以下按键可用于控制输出:

功能

w

切换线框模式

2.7. randomFog

这是一个图形化演示,展示由CURAND生成的伪随机数和准随机数的可视化效果。在创建时,randomFog使用curand的XORWOW算法在球坐标系空间(半径、角度ρ、角度θ)中生成20万个随机坐标。这些坐标经过归一化处理,以实现球体内的均匀分布。X轴以蓝色表示负方向,黄色表示正方向;Y轴以绿色表示负方向,洋红色表示正方向;Z轴以红色表示负方向,青色表示正方向。

以下按键可用于控制输出:

功能

s

生成一组新的随机数并以球面坐标形式显示(Sphere)

e

生成一组新的随机数并显示在球体表面(外壳)

b

生成一组新的随机数并以笛卡尔坐标形式显示(cuBe/Box)

p

生成一组新的随机数并在笛卡尔平面(Plane)上显示

i, l, j

分别将负Z轴向上、向右、向下和向左旋转

a

切换自动旋转

t

切换10倍缩放

z

切换坐标轴显示

x

选择 XORWOW 生成器(默认)

c

选择Sobol生成器

v

选择加扰Sobol生成器

r

重置XORWOW(即重置为初始种子)并重新生成

]

增加Sobol维度数量并重新生成

[

将Sobol维度数量重置为1并重新生成

将显示点数增加8,000(最大200,000)

将显示点数减少8,000(最低降至8,000点)

q/[ESC]

退出应用程序。

3. 通知

3.1. 注意事项

本文档仅供信息参考之用,不应视为对产品功能、状态或质量的保证。NVIDIA公司(“NVIDIA”)对本文件所含信息的准确性或完整性不作任何明示或暗示的陈述或保证,并对其中可能存在的错误不承担任何责任。NVIDIA对于因使用此类信息而产生的后果、或因使用该信息导致的第三方专利或其他权利侵权概不负责。本文件不构成对开发、发布或交付任何材料(定义见下文)、代码或功能的承诺。

NVIDIA保留随时对本文件进行更正、修改、增强、改进以及任何其他变更的权利,恕不另行通知。

客户在下单前应获取最新的相关信息,并确认这些信息是最新且完整的。

除非NVIDIA与客户授权代表签署的单独销售协议中另有约定,否则NVIDIA产品的销售均以订单确认时提供的NVIDIA标准销售条款和条件为准(以下简称"销售条款")。NVIDIA特此明确反对将任何客户通用条款适用于本文件所述NVIDIA产品的采购。本文件不直接或间接构成任何合同义务。

NVIDIA产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命支持设备,也不适用于那些可以合理预期NVIDIA产品故障或失灵会导致人身伤害、死亡、财产或环境损害的应用场景。NVIDIA对于在此类设备或应用中使用和/或包含NVIDIA产品不承担任何责任,因此客户需自行承担相关风险。

NVIDIA不声明或保证基于本文档的产品适用于任何特定用途。NVIDIA未必会对每个产品的所有参数进行测试。客户应全权负责评估和确定本文档所含信息的适用性,确保产品适合并满足客户计划的应用需求,并执行必要的应用测试以避免应用或产品出现故障。客户产品设计中的缺陷可能会影响NVIDIA产品的质量和可靠性,并可能导致超出本文档范围的其他或不同的条件和/或要求。对于任何因以下原因导致的故障、损坏、成本或问题,NVIDIA不承担任何责任:(i) 以违反本文档的任何方式使用NVIDIA产品或(ii) 客户产品设计。

本文档不授予任何NVIDIA专利权、版权或其他NVIDIA知识产权的明示或暗示许可。NVIDIA发布的关于第三方产品或服务的信息,不构成NVIDIA对这些产品或服务的使用许可或担保认可。使用此类信息可能需要获得第三方基于其专利或其他知识产权的许可,或需要获得NVIDIA基于其专利或其他知识产权的许可。

本文件中的信息仅可在获得NVIDIA事先书面批准、未经改动完整复制且完全符合所有适用的出口法律法规,并附带所有相关条件、限制和声明的情况下进行复制。

本文件及所有NVIDIA设计规格、参考板、文件、图纸、诊断工具、清单和其他文档(统称及单独称为"材料")均以"现状"提供。NVIDIA不对材料作出任何明示或默示的保证,包括但不限于对不侵权、适销性和特定用途适用性的默示保证免责。在法律允许的最大范围内,NVIDIA不就因使用本文件导致的任何损害承担责任,包括但不限于任何直接、间接、特殊、附带、惩罚性或后果性损害,无论损害成因如何,也无论责任理论为何,即使NVIDIA已被告知发生此类损害的可能性。不论客户因任何原因可能遭受的任何损害,NVIDIA对客户就本文所述产品的全部及累计责任应受产品销售条款的限制。

3.2. OpenCL

OpenCL是苹果公司的商标,经Khronos Group Inc.授权使用。

3.3. 商标

NVIDIA和NVIDIA标识是美国及其他国家NVIDIA公司的商标或注册商标。其他公司及产品名称可能是其各自关联公司的商标。