A100 上的 cublasGemmEx 与 cublasDgemm

问题描述

我试图通过比较 cublasGemmEx 和 cublasDgemm 在 A100 上的性能来找出张量核心的一些优势。正如文档所述,cuda11.2+A100 上的 cublasGemmEx 支持 FP64,我认为 cublasDgemm 适应旧算法(CUBLAS_Gemm_DEFAULT?),cublasGemmEx 应该比 cublasDgemm 快。但是我的实验表明两者具有相同的性能。 cublasDgemm 是否已经适应了张量核心?顺便说一句,对于 m=n=k=5440,两者都有大约 10 TFLOPS。

解决方法

  • 对于 cublas 使用的内核,using a profiler 您可以识别是否正在使用 tensorcore,一般来说,仅从内核名称即可。对于任意内核,链接的文章显示了可用于此目的的指标,在​​ nsight 计算中。

  • 在 A100 的情况下,published data 表示对于非 tensorcore 使用,峰值 FP64 速率为 9.7TF。如果您看到吞吐量高于 9.7TF(对于 FP64),则可以肯定正在使用 tensorcore。 (实际上,任何高于 9.7TF 的 90% 的吞吐量都应该足以满足此观察,因为引用的数字是理论峰值,而不是现实世界可实现的)。

  • CUBLAS 开发人员希望为图书馆用户提供最佳体验。我想不出一个合理的理由来为可以使用 tensorcore 完成的操作使用慢速路径。您应该期望此类库尽可能使用 tensorcore。

  • 在您的情况下,由于您看到两种操作的吞吐量相同,并且吞吐量超过 9.7TF,因此即使没有分析,tensorcore 也可以安全地用于两者。