为依赖于先前值的矩阵运行并行代码

Run parallel code for a matrix dependent on previous values

本文关键字:运行 并行 代码 依赖于      更新时间:2023-10-16

我有一个矩阵,必须从矩阵内的前一个值并行计算。如果你们中有谁能给我一个提示,告诉我怎么做,那就太好了。假设我有一个像

这样的矩阵
| 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)三个相邻元素计算。它将是其值的最小值,以此类推。每个元素都依赖于前三个相邻元素来计算其值。谁能给我一个提示,如何并行地完成它。谢谢你。

对于这种依赖,您可以并行地计算反对角线的元素。您必须初始化最上面的行和最左边的列,然后对每个反对角线一步一步地进行:

<>之前00 00 00 00…0 1 2 3…0 2 3 ..0 3…..之前

i在原理图中表示通过号0 =第一步,1 =第一步,2=第二步,

例如,您可以并行计算步骤2中的每个单元,然后并行计算步骤3中的每个单元,以此类推,就像波前扫描矩阵一样(这是一种已知的技术)

不幸的是,由于单元格之间存在数据依赖关系,因此需要等待该步骤完成后再进行下一个步骤。此外,由于元素的数量是可变的,因此这种方法将未充分利用一些处理器。