- 主题:求一个矩阵原地转置的并行算法
【 在 ble 的大作中提到: 】
: 虽然这个算法研究课大半个世纪,然后实际上应用的估计风毛菱角,屠龙术而已。强求in place是在以前资源稀缺年代的需求。
:
是的。不过楼主这个需求没说实际中可以用多少辅助空间。其实只要不强行要求O(1),给少量的辅助空间的话,还是可以做一定的并行度的,至少CPU上的并行度可以做
--
FROM 111.206.145.*
原生数组当然就是 int[3][5] 这样的静态确定大小的数组。大小固定所以用得少。
【 在 lorinsz 的大作中提到: 】
: 好奇 什么是cpp的原生二维数组?还是你是说vector<vector<T>>? 数值计算里一般不会这样声明二维数组 都是一维数组 然后加坐标变换
: 【 在 milksea 的大作中提到: 】
: : 题外话,c++标准保证数组内存连续。二维数组是数组的数组,也必须连续。
: ...................
--
修改:milksea FROM 221.222.21.*
FROM 221.222.21.*
是的,大小固定,场景应用有限
【 在 milksea 的大作中提到: 】
: 原生数组当然就是 int[3][5] 这样的静态确定大小的数组。大小固定所以用得少。
--
FROM 163.114.132.*
如果lz是在使用一些第三方包的话,就像前面说的,没必要转,调api给个tag表示是转置矩阵就行了。
--
FROM 163.114.132.*
目标是快,矩阵不大(几千列几百行这个数量级)。
只是随便问问,如果没有简单算法我就直接新开一个空间做转置了。
【 在 leslin 的大作中提到: 】
:
: 是的。不过楼主这个需求没说实际中可以用多少辅助空间。其实只要不强行要求O(1),给少量的辅助空间的话,还是可以做一定的并行度的,至少CPU上的并行度可以做
:
--
FROM 58.32.11.*
【 在 Madlee 的大作中提到: 】
: 目标是快,矩阵不大(几千列几百行这个数量级)。
: 只是随便问问,如果没有简单算法我就直接新开一个空间做转置了。
:
能开新空间就别费脑细胞了
--
FROM 111.206.145.*
是啊,都是这种类似的做法,看不出有什么必要真的交换元素
【 在 ble 的大作中提到: 】
: 真要计算的时候就按转置的方式访问(i,j)啊
: Element& element(i, j) {
: if(transposed) return element(j, i);
: ...................
--
FROM 222.128.179.*