CUDA 11和CUDA 12在功能和支持的硬件架构上存在一些差异。以下是一些主要的区别:CUDA 11:1. 支持安培新架构:CUDA 11完全支持在安培新架构上进行开发,包括A100 GPU以及基于它的DGX A100、HGX A100等多路系统。2. 支持第三代Tensor张量核心:CUDA 11支持安培架构的第三代Tensor张量核心,可以针对不同数据类型加速混合精度矩阵计算,比如TF32、Bfloat16。3. 多实例GPU虚拟化和GPU分区:CUDA 11的多实例GPU虚拟化和GPU分区功能,提升了GPU的利用率。4. 优化库性能:CUDA 11优化了库性能,包括线性代数、快速傅里叶变换(FFT)、矩阵乘法、JPEG解码等等。5. 改进编程与API:CUDA 11改进了编程与API,包括任务图表、异步数据转移、精细同步、二级缓存驻留管理等等。6. 增强Nsight开发工具集:CUDA 11增强了Nsight开发工具集,包括跟踪、编译、调试分析。7. 支持各种主要CPU架构:CUDA 11完整支持各种主要CPU架构,包括x86、ARM64、Power。8. CUDA C++编译器性能和稳定性提升:CUDA 11改进了CUDA C++编译器性能和稳定性,支持新的主编译器和语言标准(包括C++17),并支持Parallel C++ STL。9. 更新操作系统支持:CUDA 11更新了操作系统支持。CUDA 12:1. 支持Hopper和Ada Lovelace架构:CUDA 12为NVIDIA的Hopper和Ada Lovelace架构提供了可编程功能。2. 张量操作选项:CUDA 12为Hopper和Ada架构提供了很多张量操作选项,这些选项很多都支持公共PTX中间表示法。3. 合作网格阵列(CGA):CUDA 12支持C内置函数,用于SM多投的编程式二级缓存,基因组学/DPX指令,以及其他新增功能。4. 支持虚拟内存管理API:CUDA 12支持对标记为CUDA_VISIBLE_DEVICES的GPU使用虚拟内存管理API。5. 可编程优先级更新:CUDA 12的应用程序和库开发人员可以以编程方式更新CUDA流的优先级。6. 改良的CUDA动态平行化API:CUDA 12的改良后的CUDA动态平行化API相较于之前的API,性能有了实质性的提高。7. 即时链接优化(JIT LTO):CUDA 12通过nvJitLink库正式支持即时链接优化(JIT LTO)。8. 支持GCC 12.1主机编译器:CUDA 12支持GCC 12.1主机编译器。9. NVCC和NVRTC对C++20方言的支持:NVCC和NVRTC对C++20方言的支持,将NVRTC默认的C++方言从C++14更新为C++17。总的来说,CUDA 11和CUDA 12在功能和支持的硬件架构上存在差异,版本越高,功能可能越丰富,对硬件架构的支持也可能越好,建议根据自己的需要和实际情况选择合适的版本进行使用。

