在cublasSgemm()中,转置选项是否真的创建了转置A的临时副本?

时间:2017-06-08 06:24:46

标签: gpu blas cublas

gemm()函数中的

http://docs.nvidia.com/cuda/cublas/index.html#cublas-lt-t-gt-gemm  您可以指定CUBLAS_OP_T

引擎盖下发生了什么? CUBLAS是否默默地在设备空间内创建转置输入的副本,还是只是简单地对原始操作进行操作,只是更改使用的顺序索引? (例如A [i * n + j] ===> A [j * m + i])

如果实际创建副本,我应该避免它,因为时间和空间的额外成本,因为我的输入矩阵是巨大的

1 个答案:

答案 0 :(得分:1)

据我所知,没有完成物理转置(内存没有变化)。但是内存是一维的,因此NxM与转置的MxN矩阵之间的差异只是解释问题。从深处看,确实是交换哪个索引被视为“主要”索引的问题。由于BLAS起源于FORTRAN,因此“ N”是列主行,“ T”是行主行。