5
1
数学库
dtk-21.10.1库矩阵转置乘Gemm(T,N,...)速度比rocm-3.3慢很多原因
2022-06-15 15:08:37
269

我们软件将调用的hipblas数学库从rocm-3.3升级到dtk-21.10.1后发现GEMM速度明显下降:

rocm-3.3

Time for iterGemmT = 91 timeGemmT = 2.6988273
Time for iterGemmN = 64 timeGemmN = 0.000524156
Time for iterTrsm = 7 timeTrsm = 10.62563

dtk-21.10.1

Time for iterGemmT = 91 timeGemmT =* 8.8843015*
Time for iterGemmN = 64 timeGemmN = 0.001744434
Time for iterTrsm = 7 timeTrsm = 0.16573012

以上统计并未包含Host到Device的数据拷贝时间,纯粹是DCU计算时间。

dtk库的GEMM乘法明显变慢了,Trsm倒是加速很多,请问这是什么原因?

全部评论(5)
只看楼主
Z
zhaohongpeng
1楼

可以提供一下GEMM的size吗?打开一下这个环境变量:export ROCBLAS_LAYER=3 导出一下日志,我们分析一下。谢谢~

2022/6/15
H
hw45888792
回复 @zhaohongpeng

刚试了下您说的方法,发现DTK与rocm-3.3的输出确实有区别

这是rocm-3.3的
./rocblas-bench -f gemm -r f64_r --transposeA T --transposeB N -m 128 -n 128 -k 322944 --alpha 1 --lda 322944 --ldb 322944 --beta 0 --ldc 128
./rocblas-bench -f gemm -r f64_r --transposeA T --transposeB N -m 128 -n 128 -k 322944 --alpha 1 --lda 322944 --ldb 322944 --beta 0 --ldc 128
rocblas_dgemm,112,111,128,128,322944,1,0x2b1634c00000,322944,0x2b1634c00000,322944,0,0x2b1156fc9000,128
./rocblas-bench -f gemm -r f64_r --transposeA T --transposeB N -m 128 -n 128 -k 322944 --alpha 1 --lda 322944 --ldb 322944 --beta 0 --ldc 128
rocblas_dgemm,112,111,128,128,322944,1,0x2b9859e00000,322944,0x2b9859e00000,322944,0,0x2b937bfc9000,128
./rocblas-bench -f gemm -r f64_r --transposeA T --transposeB N -m 128 -n 128 -k 322944 --alpha 1 --lda 322944 --ldb 322944 --beta 0 --ldc 128

这是dtk-21.10.1
rocblas_dgemm,T,N,128,128,322944,1,0x2b9127c00000,322944,0x2b9127c00000,322944,0,0x2b905d300000,128,atomics_not_allowed
rocblas_dgemm,T,N,128,128,322944,1,0x2ad98d600000,322944,0x2ad98d600000,322944,0,0x2ad8c2d00000,128,atomics_not_allowed
./rocblas-bench -f gemm -r f64_r --transposeA T --transposeB N -m 128 -n 128 -k 322944 --alpha 1 --lda 322944 --ldb 322944 --beta 0 --ldc 128 --atomics_not_allowed
./rocblas-bench -f gemm -r f64_r --transposeA T --transposeB N -m 128 -n 128 -k 322944 --alpha 1 --lda 322944 --ldb 322944 --beta 0 --ldc 128 --atomics_not_allowed
rocblas_dgemm,T,N,128,128,322944,1,0x2b9836800000,322944,0x2b9836800000,322944,0,0x2b976bf00000,128,atomics_not_allowed
./rocblas-bench -f gemm -r f64_r --transposeA T --transposeB N -m 128 -n 128 -k 322944 --alpha 1 --lda 322944 --ldb 322944 --beta 0 --ldc 128 --atomics_not_allowed

dtk吗默认--atomics_not_allowed ?

2022/6/16
Z
zhaohongpeng
回复 @zhaohongpeng

是的,dtk-21.10.1默认是atomics_not_allowed。可以添加这个接口: rocblas_set_atomics_mode(handle, rocblas_atomics_allowed);
在您的应用中试一下。

2022/6/17
H
hw45888792
回复 @zhaohongpeng

我们尝试了添加接口rocblas_set_atomics_mode,发现并没有任何速度加成,而且精度损失严重。不过我们找到原因是初始化变慢了,以前rocm-3.3在FFT初始化时特别慢,现在DTK改善了,但是为何GEMM却变差了?

2022/6/17
全部4条回复
没有更多内容了
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据