我有一个矩阵,必须从矩阵内的先前值并行计算。如果你们中的任何人能够给我一个如何完成它的提示,那将是很好的。假设我有一个类似
的矩阵| 4 5 6 7 8|
| 5 5 5 5 5|
| 6 6 6 6 6|
| 9 9 9 9 9|
这里的值将被计算为位置(1,1)将从(0,0),(0,1)和(1,0)三个相邻元素计算。它将是其值的最小值,依此类推。每个元素都依赖于其前三个邻居来计算其值。任何人都可以给我一个暗示如何在并行中完成它。谢谢。
答案 0 :(得分:0)
对于这种依赖性,您可以并行计算反对角线的元素。您必须逐步初始化最上面的行和最左边的列,然后继续执行每个反对角线:
0 0 0 0 .. 0 1 2 3 .. 0 2 3 .. 0 3 ... ..
我在原理图中表示了通过号码 0 =初始化,1 =第一步,2 =第二步......
例如,您可以并行计算步骤2中的每个单元格,然后在步骤3中并行计算每个单元格,依此类推,就像扫描矩阵的波前一样(这是一种已知技术)
不幸的是,由于单元格之间存在数据依赖关系,因此需要等待完成步骤才能继续执行下一步。 此外,由于元素的数量是可变的,因此这种方法将无法充分利用某些处理器。