DefTruth/CUDA-Learn-Notes

你好,关于online safe softmax的速度,貌似并没有明显提升

lzcchl opened this issue · 2 comments

https://github.com/DefTruth/CUDA-Learn-Notes/tree/main/kernels/softmax
我看了你的实验结果,和我测试的结果也基本一致,就是online safe softmax相对于safe softmax的速度提升不明显,尤其是使用f32x4的情况下,速度基本一致,请问这是为什么?
1732783106215

这是由于softmax本质上是访存密集型算子,按照论文中的数据,只要在H比较大,比如>=10^4的时候,才有会有大约20%的提升。我更新了一下softmax让online softmax支持,H=2048和4096的测试。更大的H,需要增加新的kernel支持。在H=2048的时候。

----------------------------------------------------------------------------------------------------
                                             S=4096, H=2048
----------------------------------------------------------------------------------------------------
          out_f32x4(per): ['0.00018239  ', '0.00057175  ', '0.00027274  '], time:0.01603603ms
         out_f32x4(safe): ['0.00018239  ', '0.00057175  ', '0.00027274  '], time:0.02082586ms
  out_f32x4(safe+online): ['0.00018239  ', '0.00057175  ', '0.00027274  '], time:0.01795769ms
         out_f32_th(per): ['0.00018239  ', '0.00057175  ', '0.00027274  '], time:0.06706953ms
----------------------------------------------------------------------------------------------------

0.0201 -> 0.0179, 大约13%的提升。

谢谢大佬!