当浏览各种OpenCL BLAS库时,遇到了基于输入矩阵内存对齐的不同GEMM实现。
说,
NN - A& B矩阵以正常形式存储
TN - 以转置形式存储的矩阵,B矩阵以正常形式存储
等等...
对于我的用例,矩阵以行主格式存储。如果需要,我可以自由地转置矩阵。
鉴于这些,
- 有没有办法说哪个GEMM实施(NN / TN / NT / TT)更适合我的用例(无需进行基准测试和决定)?
- 是否有任何公式来计算每个实现中调用的读/写次数?
- 我读到在GEMM中调用的操作数是2xMxNxK。这是对的吗?如果正确,怎么样?
醇>