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更新1中引入了-arch= native选项。这个-arch=native选项为用户提供了一种便捷方式,让NVCC根据系统安装的GPU自动确定正确的目标架构来编译CUDA设备代码。当应用程序在编译的同一系统上运行时,这对测试特别有帮助。
1.1.5. 从nvlink生成PTX:
使用以下命令行,设备链接器nvlink除了生成CUBIN外,还会输出PTX文件:
nvcc -dlto -dlink -ptx
Device linking by nvlink is the final stage in the CUDA compilation process. Applications that have multiple source translation units have to be compiled in separate compilation mode. LTO (introduced in CUDA 11.4) allowed nvlink to perform optimizations at device link time instead of at compile time so that separately compiled applications with several translation units can be optimized to the same level as whole program compilations with a single translation unit. However, without the option to output PTX, applications that cared about forward compatibility of device code could not benefit from Link Time Optimization or had to constrain the device code to a single source file.
通过支持nvlink执行LTO(链接时优化)生成PTX输出的选项,需要跨GPU架构实现前向兼容的客户应用程序可以跨越多个文件,同时还能利用链接时优化优势。
1.1.6. Bullseye支持
NVCC编译的源代码现在可以与代码覆盖率工具Bullseye配合使用。该代码覆盖率仅适用于CPU或主机函数。Bullseye不支持设备函数的代码覆盖率。
1.1.7. INT128开发者工具支持
在11.5版本中,CUDA C++增加了对128位的支持。11.6版本中,开发者工具也支持该数据类型。通过最新版本的libcu++,数学函数现已支持int 128数据类型。
2. 通知
2.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对客户就本文所述产品的全部及累计责任应受产品销售条款的限制。
2.2. OpenCL
OpenCL是苹果公司的商标,经Khronos Group Inc.授权使用。
2.3. 商标
NVIDIA和NVIDIA标识是美国及其他国家NVIDIA公司的商标或注册商标。其他公司及产品名称可能是其各自关联公司的商标。