CUDA 演示套件
CUDA 演示套件的参考指南。
1. 简介
CUDA 演示套件包含使用 CUDA 预构建的应用程序。这些应用程序演示了 NVIDIA GPU 的功能和详细信息。
2. 演示程序
以下是演示套件中的演示程序。
2.1. deviceQuery
此应用程序枚举系统中存在的 CUDA 设备的属性,并以人类可读的格式显示它们。
2.2. vectorAdd
此应用程序是一个非常基础的演示程序,实现了逐元素的向量加法。
2.3. bandwidthTest
此应用程序提供 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 |
指定要使用的模式 执行快速测量 测量用户指定的数值范围 对大范围数值执行密集的 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 上扩展 n 体模拟。在命令行中添加“-numbodies=num_of_bodies”将允许用户设置模拟的物体数量。在命令行选项中添加“-numdevices=N”将导致示例使用 N 个设备(如果可用)进行模拟。在这种模式下,所有物体的位置和速度数据都是使用“零复制”而不是从设备内存从系统内存中读取的。对于少量设备(4 个或更少)和足够多的物体,带宽不是瓶颈,因此我们可以在这些设备上实现强大的扩展。
参数
选项 |
说明 |
---|---|
-fullscreen |
在全屏模式下运行 n 体模拟 |
-fp64 |
使用双精度浮点值进行模拟 |
-hostmem |
将模拟数据存储在主机内存中 |
-benchmark |
运行基准测试以测量性能 |
-numbodies=N |
模拟中运行的物体数量(>= 1) |
-device=d |
其中 d=0,1,2…. 表示要使用的 CUDA 设备 |
-numdevices=i |
其中 i=(用于模拟的 CUDA 设备数量 > 0) |
-compare |
比较在默认 GPU 上运行一次和在 CPU 上运行一次的模拟结果 |
-cpu |
在 CPU 上运行 n 体模拟 |
-tipsy=file.bin |
加载 tipsy 模型文件进行模拟 |
2.6. oceanFFT
这是一个图形演示程序,它使用 CUFFT 库模拟海洋高度场,并使用 OpenGL 渲染结果。
以下键可用于控制输出
键 |
功能 |
---|---|
w |
切换线框模式 |
2.7. randomFog
这是一个图形演示程序,它可视化由 CURAND 生成的伪随机数和准随机数。在创建时,randomFog 使用 curand 的 XORWOW 算法在球坐标空间(半径、角度 rho、角度 theta)中生成 200,000 个随机坐标。坐标被归一化以在整个球体中实现均匀分布。X 轴在负方向绘制为蓝色,正方向绘制为黄色。Y 轴在负方向绘制为绿色,正方向绘制为品红色。Z 轴在负方向绘制为红色,正方向绘制为青色。
以下键可用于控制输出
键 |
功能 |
---|---|
s |
生成新的随机数集并显示为球坐标(Sphere) |
e |
生成新的随机数集并在球面上显示(shEll) |
b |
生成新的随机数集并显示为笛卡尔坐标(cuBe/Box) |
p |
生成新的随机数集并在笛卡尔平面上显示(Plane) |
i, l, j |
分别向上、向右、向下和向左旋转负 Z 轴 |
a |
切换自动旋转 |
t |
切换 10 倍缩放 |
z |
切换轴显示 |
x |
选择 XORWOW 生成器(默认) |
c |
选择 Sobol’ 生成器 |
v |
选择 scrambled Sobol’ 生成器 |
r |
重置 XORWOW(即重置为初始种子)并重新生成 |
] |
增加 Sobol’ 维度的数量并重新生成 |
[ |
将 Sobol’ 维度的数量重置为 1 并重新生成 |
|
将显示的点的数量增加 8,000(最多 200,000) |
|
将显示的点的数量减少 8,000(最少 8000) |
q/[ESC] |
退出应用程序。 |
3. 通知
3.1. 通知
本文档仅供参考,不应被视为对产品的特定功能、状况或质量的保证。NVIDIA Corporation(“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 已被告知可能发生此类损害。尽管客户可能因任何原因而遭受任何损害,但 NVIDIA 对本文所述产品的客户的累计总责任应根据产品的销售条款进行限制。
3.2. OpenCL
OpenCL 是 Apple Inc. 的商标,已获得 Khronos Group Inc. 的许可使用。
3.3. 商标
NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标或注册商标。其他公司和产品名称可能是与其相关的各自公司的商标。