- 主题:求一个矩阵原地转置的并行算法
矩阵,不是方阵,简单的原地转置按行或列并行容易把后面的数据冲掉,
网上找了下要么是重新开一个output区做并行要么就干脆是单线程的不并行。
有没有好点的算法能在原地并行转置的?
谢谢。
--
FROM 58.32.11.*
这个,问题是真要计算时怎么计算啊
【 在 ble 的大作中提到: 】
: EIGEN里的做法是设置个标准,转置先不做,真要计算时再做。
: 发自「今日水木 on IN2010」
--
FROM 58.32.11.*
如果能提前算出有几个独立循环,就可以并行化?
【 在 leslin 的大作中提到: 】
:
: 原地转置算法,需要若干个循环。后续移动哪个元素都是依赖于前面的结果,这个怎么个并行啊
:
--
FROM 222.67.180.*
谢谢,我去找找看
【 在 foliver 的大作中提到: 】
: 可以参考下opencv的矩阵转置算法,应该能改造成你想要的。
--
FROM 101.93.77.*
调用第三方库的时候需要连续的内存地址,有时候按行做有时候按列做,所以需要一个能转来转去的矩阵。
【 在 ble 的大作中提到: 】
: 真要计算的时候就按转置的方式访问(i,j)啊
: Element& element(i, j) {
: if(transposed) return element(j, i);
: ...................
--
FROM 101.93.77.*
好吧,谢谢。那我还是开个新空间试试效率。
【 在 leslin 的大作中提到: 】
:
: 算出来就等于转置做完了,为啥要再折腾一遍?
--
FROM 101.93.77.*
目标是快,矩阵不大(几千列几百行这个数量级)。
只是随便问问,如果没有简单算法我就直接新开一个空间做转置了。
【 在 leslin 的大作中提到: 】
:
: 是的。不过楼主这个需求没说实际中可以用多少辅助空间。其实只要不强行要求O(1),给少量的辅助空间的话,还是可以做一定的并行度的,至少CPU上的并行度可以做
:
--
FROM 58.32.11.*