NVIDIA CUDA 11.0发布

2020-07-09 02:39:15

本节概述了NVIDIA®CUDA®工具包的主要组件,并指出它们在安装后的位置。

CUDA-C和CUDA-C++编译器NVCC位于bin/目录中。它构建在NVVM优化器之上,而NVVM优化器本身构建在LLVM编译器基础设施之上。想要直接面向NVVM的开发人员可以使用编译器SDK,该SDK位于nvvm/目录中。

请注意,以下文件是编译器内部文件,如有更改,恕不另行通知。

以下开发工具位于bin/目录中(除了作为Microsoft Visual Studio插件安装的NSight Visual Studio Edition(VSE)外,NSight Compute和Night Systems位于单独的目录中)。

下面列出的科学库和实用程序库位于lib64/目录中(Windows上的DLL位于bin/中),它们的接口位于include/目录中。

说明如何使用各种CUDA和库API的代码样例在Linux和Mac上的Samples/目录中提供,并在Windows上安装到C:\ProgramData\NVIDIA Corporation\CUDA Samples。在Linux和Mac上,Samples/目录是只读的,如果要修改示例,必须将其复制到其他位置。有关更多说明,请参阅Linux和Mac入门指南。

这些发行说明的最新版本可在http://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html.在线找到。此外,工具包根目录中的version.txt文件将包含已安装工具包的版本和内部版本号。

可以在doc/pdf/目录中找到pdf格式的文档,也可以在doc/html/index.html中找到HTML格式的文档,也可以在http://docs.nvidia.com/cuda/index.html.上在线找到文档。

对于CUDA Toolkit 7.0和更新版本,位于安装目录Extras/中。除非使用.rpm或.deb软件包安装程序,否则默认情况下会在工具包安装过程中创建该目录。在这种情况下,必须手动安装cuda-gdb-src包。

批处理图像标签标记压缩,用于消除从LabelMarkers调用输出的标记标签ID之间的稀疏性。

图像整体填充功能使用指定的新值填充图像的连接区域。

nvJPEG允许用户为每个色度子采样格式分配单独的内存池。这有助于避免内存重新分配开销。这可以通过将新添加的标志NVJPEG_FLAGS_ENABLE_MEMORY_POOL传递给nvjpegCreateEx API来控制。

cuBLASLT矩阵乘法增加了对除双精度(FP64)之外的所有浮点类型的融合REU和偏置运算的支持。

添加GESVD的64位接口。新的例程cuolverDnGesvd_BufferSize()填充了32位API cuolverDn[S|D|C|Z]gesvd_BufferSize()中缺少的参数,因此它可以准确地估计工作区的大小。

在cuolverMG库中增加了单进程多GPU Cholesky分解能力POTRF、POTRS和POTRI。

修复了如果矩阵为零且维度大于25,SYEVD/SYGVD将失败并返回错误代码7的问题。

添加了Axpby(Cus ParseAxpby)、Scatter(Cus ParseScatter)、Gather(Cus ParseGather)、Givens Rotation(Cus ParseRot)的新通用API。还支持__nv_bfloat16/__nv_bfloat162数据类型和64位索引。

cuFFT现在接受内核内单精度计算的2次方大小的__nv_bfloat16输入和输出数据类型。

cuFFT现在接受内核内单精度计算的2次方大小的__nv_bfloat16输入和输出数据类型。

请注意,从CUDA11.0开始,由于CUDA库(如CuFFT和CUB)对C++11的要求,建议GCC编译器的最低版本为GCC 5。在RHEL7或CentOS7等默认可能使用较旧的GCC工具链的发行版上,建议将较新的GCC工具链与CUDA11.0配合使用。较新的GCC工具链随RedHat开发人员工具集一起提供。

当atype或ctype为CUDA_R_16F或CUDA_R_16BF,并且strideA、strideB或strideC不是8的倍数,并且内部试探法确定使用某些启用张量核心的内核时,cublasGemmStridedBatchedEx()和cublasLtMatmul()在极少数情况下可能会导致内存访问错误。建议的解决方法是根据调用cublasLtMatmulAlgoGetHeuristic()时使用的矩阵步长指定CUBLASLT_MATMUL_PREF_MIN_ALIGN_<;A、B、C、D>;_BYTES。

运行CUDA应用程序要求系统至少具有一个支持CUDA的GPU和与CUDA工具包兼容的驱动程序。参见表2.有关支持CUDA的各种图形处理器产品的更多信息,请访问https://developer.nvidia.com/cuda-gpus.。

CUDA工具包的每个版本都需要CUDA驱动程序的最低版本。CUDA驱动程序是向后兼容的,这意味着针对特定版本的CUDA编译的应用程序将继续在后续(更高)的驱动程序版本上工作。

为方便起见,NVIDIA驱动程序作为CUDA工具包安装的一部分进行安装。请注意,此驱动程序用于开发目的,不建议在与特斯拉GPU配合使用的生产中使用。

要使用特斯拉GPU在生产中运行CUDA应用程序,建议从http://www.nvidia.com/drivers.的NVIDIA驱动程序下载站点下载最新的特斯拉GPU驱动程序。

在安装CUDA工具包期间,在Windows(使用交互式或静默安装时)或Linux(通过使用元软件包)上可能会跳过NVIDIA驱动程序的安装。

CUDA 11.0增加了对NVIDIA A100 GPU和基于A100的系统的支持。A100 GPU通过CUDA添加了以下计算功能:通过DMMA指令进行双精度矩阵相乘累加(请参阅CUDA C++中的WMMA和PTX中的MMA的说明)。

支持异步复制指令,允许异步复制数据(LDGSTS指令和相应的cp.async.*ptx指令)。

协作组改进,允许在WARP中跨线程执行缩减操作(使用redux.sync指令)。

支持通过多实例GPU(MIG)进行硬件分区。有关用于配置MIG实例的相应NVML API和NVIDIA-SMI CLI工具的详细信息,请参阅驱动程序发行说明。

添加了7.0版本的并行线程执行指令集体系结构(ISA)。有关新指令(sm_80目标、新指令、.bf16、.tf32和新MMA形状中的新浮点数据类型)和过时指令的更多详细信息,请参阅PTX文档中的这一节。

CUDA 11.0增加了对ARM服务器平台(Arm64 SBSA)的支持。请注意,在此版本中,特斯拉V100 GPU仅支持以下平台:

CUDA支持广泛的Linux和Windows发行版。有关支持的操作系统的完整列表,请参阅系统要求以了解详细信息。CUDA 11.0支持以下新的Linux发行版。

CUDA C++包括对新数据类型的支持,以支持新的16位浮点数据(具有1符号位、8位指数和7位尾数):__nv_bfloat16和__nv_bfloat162。有关数据类型定义和支持的算术运算的更多信息,请参阅include/cuda_bf16.hpp和CUDA Math API。

在8x8x4形状(DMMA.884)的可用输入/输出类型列表中添加了对DOUBLE(FP64)的支持。

CUDA_VIREBLE_DEVICES变量已扩展,添加了对在NVIDIA A100/GA100 GPU中枚举多个实例GPU(MIG)的支持。

添加了对GPU启动的写入的PCIe轻松排序的支持。这在默认情况下不启用,但可以通过在Linux x86_64上设置以下模块参数来启用:NVreg_EnablePCIERelaxedOrderingMode。

CUDA 11.0在PTX内存模型的API同步小节中添加了任务间内存排序规范,并允许CUDA实现根据此添加进行优化。在极少数情况下,代码可能假定了比添加的规范所要求的更强的顺序,并且可能会注意到函数回归。可以将环境变量CUDA_FORCE_INTERTASK_SYSTEM_FARCH设置为值";0";以禁用10.2之后的任务栏间优化,或将";1";设置为为445及更高版本的驱动程序启用它们。如果未设置该变量,则完全针对CUDA 10.2或更早版本编译的代码将禁用优化,而针对11.0或更高版本编译的代码将启用优化。混合版本的代码可能会看到组合。

在当前版本的CUDA软件中,以下功能已弃用或删除。不推荐使用的功能在当前版本中仍然有效,但是它们的文档可能已被删除,并且它们将在将来的版本中正式不受支持。我们建议开发人员在他们的软件中使用这些功能的替代解决方案。CUDA 11.0不支持MacOS来开发和运行CUDA应用程序。请注意,MacOS主机上仍支持某些CUDA开发人员工具进行远程(目标)调试和评测。有关详细信息,请参阅CUDA工具部分。

nvGraph不再作为CUDA工具包安装程序的一部分提供。将cuGraph项目视为Rapids的一部分;该项目包括来自nvGraph的算法等。

上下文创建标志CU_CTX_MAP_HOST(用于支持映射的固定分配)已弃用,将在未来的CUDA版本中删除。

NSight VSE、NSight EE插件、CUDA-GDB、nvprof、Visual Profiler和Memcheck正在减少对以下体系结构的支持:已取消对基于开普勒sm_30和sm_32体系结构的产品(从CUDA 10.2起不推荐使用)的支持。

即将发布的CUDA版本中将不再支持以下计算功能(自CUDA 10.2起不推荐使用):

cublasGemmEx API(包括批处理变体)中的算法选择对于NVIDIA安培架构GPU不起作用。不管选择什么,它都将默认为启发式选择。鼓励用户使用cublasLT API实现算法选择功能。

矩阵乘法数学模式CUBLAS_TENSOR_OP_MATH已弃用,将在未来版本中删除。建议用户使用新的cublasComputeType_t枚举来定义计算精度。