A100 上的 cublasGemmEx 与 cublasDgemm
Posted
技术标签:
【中文标题】A100 上的 cublasGemmEx 与 cublasDgemm【英文标题】:cublasGemmEx vs. cublasDgemm on A100 【发布时间】:2021-07-05 20:39:11 【问题描述】:我试图通过比较 cublasGemmEx 和 cublasDgemm 在 A100 上的性能来找到张量核心的一些优势。正如文档所述,cuda11.2+A100 上的 cublasGemmEx 支持 FP64,我认为 cublasDgemm 适应了旧算法(CUBLAS_GEMM_DEFAULT?),cublasGemmEx 应该比 cublasDgemm 快。但我的实验表明两者具有相同的性能。 cublasDgemm 是否已经适应张量核心?顺便说一句,对于 m=n=k=5440,两者都有大约 10 TFLOPS。
【问题讨论】:
双精度 GEMM 几乎可以肯定是内存带宽限制。如果两种算法都足够优化以达到峰值内存带宽,那么内部实现可能无关紧要 感谢您的提醒@RobertCrovella,分析显示的内核名称中都有“张量”:cutlass::Kernel对于 cublas 使用的内核,using a profiler 可以识别是否使用了 tensorcore,一般来说,仅从内核名称即可。对于任意内核,链接文章显示了可用于此目的的指标,在 nsight 计算中。
在 A100 的情况下,published data 表示对于非张量核使用,峰值 FP64 速率为 9.7TF。如果您目睹的吞吐量高于 9.7TF(对于 FP64),则可以肯定使用 tensorcore。 (实际上任何高于 9.7TF 的 90% 的吞吐量都应该足以进行此观察,因为引用的数字是理论上的峰值,而不是现实世界可实现的)。
CUBLAS 开发人员希望为图书馆用户提供最佳体验。对于可以使用 tensorcore 完成的操作,我想不出一个合理的理由来使用慢速路径。您应该期望此类库尽可能使用 tensorcore。
在您的情况下,由于您看到两个操作的吞吐量相同,并且吞吐量超过 9.7TF,因此即使没有分析,也可以安全地选择 tensorcore 用于两者。
【讨论】:
以上是关于A100 上的 cublasGemmEx 与 cublasDgemm的主要内容,如果未能解决你的问题,请参考以下文章
服务器重置后 A100 上的 CUDA_ERROR_NOT_INITIALIZED