cuda内核'volta_sgemm_128x32_nn'是什么意思?

问题描述

我正在研究 nvidia torch matmul 功能。

### variable creation
a = torch.randn(size=(1,128,3),dtype=torch.float32).to(cuda)
b = torch.randn(size=(1,3,32),dtype=torch.float32).to(cuda)

### execution
c = torch.matmul(a,b)

我使用 pyprof 分析了这段代码,这给了我下面的结果。

enter image description here

里面的很多东西我都看不懂。

  1. sgemm_128_32 是什么意思? 我看到 sgemm 中的“s”代表单精度,“gemm”表示一般矩阵乘法。但我不知道 128_32 的意思。我的输出矩阵维度是 128 x 32。但我知道 cutlass 使用外积优化了 sgemm。 (我会给你链接,参考 1)其实我看不懂这个链接。

(1) 128_32 是否只是表示输出矩阵的维度? (2)有什么方法可以实际计算我的输出矩阵(c,在我的代码中)? (例如,总共有128*32个线程。每个线程负责一个输出元素,使用内积方式)

  1. 为什么 Grid 和 Block 各有 3 个维度以及网格和块如何用于 sgemm_128_32? 网格由 x、y、z 组成。而 Block 由 x,y,z 组成。 (1)为什么需要3维?我看到(在上图中)块 X 有 256 个线程。 (2) 这是真的吗?并且网格 Y 是 4。所以这意味着网格 Y 中有 4 个块。(3)这是真的吗?

  2. 通过使用该 pyprof 结果,我可以计算出使用了多少个 SM?在那个 SM 中激活了多少经线?

谢谢。

参考 1:https://developer.nvidia.com/blog/cutlass-linear-algebra-cuda/

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...