问题描述
我正在研究 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)
里面的很多东西我都看不懂。
- sgemm_128_32 是什么意思? 我看到 sgemm 中的“s”代表单精度,“gemm”表示一般矩阵乘法。但我不知道 128_32 的意思。我的输出矩阵维度是 128 x 32。但我知道 cutlass 使用外积优化了 sgemm。 (我会给你链接,参考 1)其实我看不懂这个链接。
(1) 128_32 是否只是表示输出矩阵的维度? (2)有什么方法可以实际计算我的输出矩阵(c,在我的代码中)? (例如,总共有128*32个线程。每个线程负责一个输出元素,使用内积方式)
-
为什么 Grid 和 Block 各有 3 个维度以及网格和块如何用于 sgemm_128_32? 网格由 x、y、z 组成。而 Block 由 x,y,z 组成。 (1)为什么需要3维?我看到(在上图中)块 X 有 256 个线程。 (2) 这是真的吗?并且网格 Y 是 4。所以这意味着网格 Y 中有 4 个块。(3)这是真的吗?
-
通过使用该 pyprof 结果,我可以计算出使用了多少个 SM?在那个 SM 中激活了多少经线?
谢谢。
参考 1:https://developer.nvidia.com/blog/cutlass-linear-algebra-cuda/
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)