- 主题:求一个矩阵原地转置的并行算法
【 在 Madlee 的大作中提到: 】
: 矩阵,不是方阵,简单的原地转置按行或列并行容易把后面的数据冲掉,
: 网上找了下要么是重新开一个output区做并行要么就干脆是单线程的不并行。
: 有没有好点的算法能在原地并行转置的?
: ...................
原地转置算法,需要若干个循环。后续移动哪个元素都是依赖于前面的结果,这个怎么个并行啊
--
FROM 111.206.145.*
【 在 Madlee 的大作中提到: 】
: 如果能提前算出有几个独立循环,就可以并行化?
:
算出来就等于转置做完了,为啥要再折腾一遍?
--
FROM 111.206.145.*
【 在 here080 的大作中提到: 】
: 转置为啥需要“若干个循环”?不就是两两对换吗?
:
非方阵
--
FROM 111.206.145.*
【 在 here080 的大作中提到: 】
: 非方阵如何“原地”转置?
:
有个算法可以做到的,随便一搜就有
有的公司还无良的拿来做面试题,不过通常给提示
--
FROM 111.206.145.*
【 在 here080 的大作中提到: 】
: 这不是算法的问题,而是存储的问题。
: 如果你是二维数组,那就不可能“原地”转置。
: 如果你是一维数组通过指标换算,那显然直接改这个换算关系就可以了。
: ...................
这是个经典算法
--
FROM 125.33.57.*
【 在 ble 的大作中提到: 】
: 虽然这个算法研究课大半个世纪,然后实际上应用的估计风毛菱角,屠龙术而已。强求in place是在以前资源稀缺年代的需求。
:
是的。不过楼主这个需求没说实际中可以用多少辅助空间。其实只要不强行要求O(1),给少量的辅助空间的话,还是可以做一定的并行度的,至少CPU上的并行度可以做
--
FROM 111.206.145.*
【 在 Madlee 的大作中提到: 】
: 目标是快,矩阵不大(几千列几百行这个数量级)。
: 只是随便问问,如果没有简单算法我就直接新开一个空间做转置了。
:
能开新空间就别费脑细胞了
--
FROM 111.206.145.*