NVIDIA cuTENSOR 是一个 CUDA 数学库,提供经过优化的张量运算。张量是一种密集的多维数组或数组片段。cuTENSOR 2.0 的发布代表着功能和性能方面的重大更新,这一版本重构了其 API,使其更富有表现力,包括在 NVIDIA Ampere 和 NVIDIA Hopper GPU 架构上实现的出色性能。
本文介绍了 cuTENSOR 2.0 库,以及如何使用其运算。有关更多信息,请参阅系列中的下一篇文章 cuTENSOR 2.0 : 性能和应用。
虽然张量运算看起来很陌生,但它们描述了许多自然发生的算法。尤其是,这些运算在机器学习和量子化学中十分常见。
如果您已经使用 NVIDIA cuBLAS 或 BLAS,cuTENSOR 提供的三个例程可能会让您感到眼前一亮:
元素式 API 对应于 1 级 BLAS ( 向量-向量运算 )
归约 API 对应于 2 级 BLAS ( 矩阵-向量运算 )
收缩 API 对应于 3 级 B LAS ( 矩阵-矩阵运算 )
主要区别在于,cuTENSOR 可将这些运算扩展到多维度。cuTENSOR 使您无需担心这些运算的性能优化,而是可以依靠现成的加速例程。
cuTENSOR 的优势和进步不仅可以通过您的 CUDA 代码使用,而且还可以通过其他许多工具使用,这些工具目前均已提供对 cuTENSOR 的支持。
Fortran 开发者可以从 NVIDIA HPC SDK 中提供的 cuTENSOR Fortran API 绑定中受益,NVFORTRAN。
Python 开发者可以通过 CuPy 访问 cuTENSOR 中提供的 NVIDIA GPU 加速的张量收缩、归约和元素计算。
cuTENSOR 也可用于 Julia 开发者使用的 Julia Lang。
借助 cuTENSOR 加速的程序数量不断增加。我们还提供使用 TensorFlow 和 PyTorch 在 C++ 和 Python 中入门的示例代码。
在本文中,我们讨论了 cuTENSOR 支持的各种操作,以及如何作为 CUDA 编程人员利用这些操作。我们还分享了性能注意事项和其他有用的提示和技巧。最后,我们分享了我们使用的示例代码,这些代码也可以在
/NVIDIA/CUDALibrarySamples GitHub
资源库中找到。
全文链接:
https://developer.nvidia.com/blog/cutensor-2-0-a-comprehensive-guide-for-accelerating-tensor-computations/