NVIDIA CUDA 特性归档
按版本发布的 CUDA 特性列表。
1. CUDA 11.6 特性
1.1. 编译器
1.1.1. VS2022 支持
CUDA 11.6 官方支持最新的 VS2022 作为主机编译器。必须从此处下载单独的 Nsight Visual Studio 安装程序 2022.1.1。未来的 CUDA 版本将集成支持 VS2022 的 Nsight Visual Studio 安装程序。
1.1.2. 公共 PTX 中的新指令
用于位掩码创建的新指令—BMSK 和符号扩展—SZEXT 已添加到公共 PTX ISA 中。您可以在 PTX ISA 指南中找到这些指令的文档:BMSK 和 SZEXT。
1.1.3. 未使用的内核优化
在 CUDA 11.5 中,引入了未使用的内核剪枝,它具有减小二进制文件大小和通过更高效的优化来提高性能的潜在优势。这是一个选择加入的功能,但在 11.6 中,此功能默认启用。正如 11.5 博客中提到的,有一个选择退出标志,可以在出于调试目的或其他特殊情况需要时使用。
$ nvcc -rdc=true user.cu testlib.a -o user -Xnvlink -ignore-host-info
1.1.4. 新的 -arch=native 选项
除了在 CUDA 11.5 中添加的 -arch=all
和 -arch=all-major
选项之外,NVCC 在 CUDA 11.5 update 1 中引入了 -arch= native
。对于用户来说,-arch=native 选项是一种方便的方式,可以让 NVCC 根据系统上安装的 GPU 确定编译 CUDA 设备代码的正确目标架构。当应用程序在与其编译的系统相同的系统上运行时,这对于测试特别有帮助。
1.1.5. 从 nvlink 生成 PTX:
使用以下命令行,设备链接器 nvlink 除了 CUBIN 之外,还将生成 PTX 作为输出
nvcc -dlto -dlink -ptx
通过 nvlink 进行设备链接是 CUDA 编译过程的最后阶段。具有多个源翻译单元的应用程序必须在单独的编译模式下编译。LTO(在 CUDA 11.4 中引入)允许 nvlink 在设备链接时而不是在编译时执行优化,以便可以将具有多个翻译单元的单独编译的应用程序优化到与具有单个翻译单元的整个程序编译相同的级别。但是,如果没有输出 PTX 的选项,则关心设备代码向前兼容性的应用程序将无法从链接时优化中受益,或者必须将设备代码限制为单个源文件。
通过 nvlink 执行 LTO 以在 PTX 中生成输出的选项,需要跨 GPU 架构向前兼容性的客户应用程序可以跨多个文件,并且还可以利用链接时优化。
1.1.6. Bullseye 支持
NVCC 编译的源代码现在可以与代码覆盖率工具 Bullseye 一起使用。代码覆盖率仅适用于 CPU 或主机函数。通过 Bullseye 不支持设备函数的代码覆盖率。
1.1.7. INT128 开发者工具支持
在 11.5 中,添加了对 128 位 的 CUDA C++ 支持。在 11.6 中,开发者工具也支持此数据类型。使用最新版本的 libcu++,数学函数支持 int 128 数据类型。
2. 通知
2.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 对本文所述产品的客户承担的总体和累积责任应根据产品的销售条款的规定进行限制。
2.2. OpenCL
OpenCL 是 Apple Inc. 的商标,已获得 Khronos Group Inc. 的许可使用。
2.3. 商标
NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标或注册商标。其他公司和产品名称可能是与其相关的各自公司的商标。