我在用GPU做Tensorflow。我对张量的数据格式很好奇。我认为数据存储在第一行的GPU/CPU中。
但是,如果我想在一个操作(Op)中将数据存储在列主(Op)中,我是否可以只为该操作(Op)更改数据格式?(例如在函数中添加一些选项表示更改数据格式)
例如,在matmul操作中,存在与转置相关的选项。如果我转换矩阵,数据格式是否有任何变化(列主/行主)?
matmul
谢谢。
发布于 2018-07-16 07:39:42
是的,默认的数据格式是行大调,它与本征相反。
如果您使用的是Python,那么您需要在模拟col布局时使用转换你的数据。当使用C++时,没有什么可以阻止您使用Eigen::RowMajor。
Eigen::RowMajor
matmul有transpose_a和transpose_b选项,因为(cu-)BLAS可以处理这两种格式,而不需要显式转置,例如参见transpose_b。所以它不会改变你的数据格式。这只是一个诡计,防止额外推出CUDA内核或其他功能之前,以尽量减少运行时间。
transpose_a
transpose_b
它是BLAS规范的一部分,见LAPACK。
https://stackoverflow.com/questions/51356413
相似问题