Cuda A100上的Cublasgemex与Cublasgemm

Cuda A100上的Cublasgemex与Cublasgemm,cuda,cublas,Cuda,Cublas,我试图通过比较cublasGemmEx和CublasGemmm在A100上的性能来发现张量核的一些优势。正如文档所描述的,cuda11.2+A100上的cublasGemmEx支持FP64,我认为cublasDgemm采用了旧算法(CUBLAS_GEMM_DEFAULT?),cublasGemmEx应该比cublasDgemm快。但我的实验表明两者的性能相同。cublasDgemm是否已经适应了张量核?顺便说一句,对于m=n=k=5440,两者都有大约10个TFLOP。 对于cublas使用的内

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

  • 对于cublas使用的内核,一般来说,仅从内核名称就可以确定是否正在使用tensorcore。对于任意内核,链接文章在nsight compute中显示了一个可用于此目的的度量

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

  • CUBLAS开发人员希望为库用户提供最佳体验。我想不出一个合理的理由来为一个可以使用tensorcore完成的操作使用一个缓慢的路径。如果可能,您应该期望这样的库使用tensorcore

  • 在您的案例中,由于您看到两个操作的吞吐量相同,并且吞吐量超过9.7TF,因此即使不进行分析,也可以肯定tensorcore同时用于这两个操作


几乎可以肯定,双精度GEMM内存带宽有限。如果这两种算法都足够优化以达到峰值内存带宽,那么内部实现可能对您的内存没有影响remiding@RobertCrovella,分析显示两者在内核名称中都有“张量”:cutlass::kernel。