我正在使用GPU进行Tensorflow。我对张量的数据格式感到好奇。我认为数据存储在Row Major的GPU / CPU中。
但是,如果要在一个操作(Op)中将数据存储在以列为主的格式中,是否可以仅更改该操作(Op)的数据格式? (例如,在功能中添加一些选项表示更改数据格式)
例如,在matmul
操作中,存在与转置相关的选项。如果我转置矩阵,数据格式(列主/行主)是否有变化?
谢谢。
答案 0 :(得分:1)
如果您使用的是Python,则在模拟大型布局时,您需要transpose your data。使用C ++时,没有什么会阻止您使用Eigen::RowMajor
。
matmul
具有选项transpose_a
和transpose_b
,因为(cu-)BLAS可以处理两种格式而无需显式转置,例如参见GEMM。因此,它不会更改您的数据格式。这只是一个技巧,可以防止预先启动CUDA内核或其他功能的附加启动,以最大程度地减少运行时间。
它是BLAS规范e.g. see LAPACK
的一部分