为依赖于先前值的矩阵运行并行代码
Run parallel code for a matrix dependent on previous values
我有一个矩阵,必须从矩阵内的前一个值并行计算。如果你们中有谁能给我一个提示,告诉我怎么做,那就太好了。假设我有一个像
这样的矩阵| 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中的每个单元,以此类推,就像波前扫描矩阵一样(这是一种已知的技术)
不幸的是,由于单元格之间存在数据依赖关系,因此需要等待该步骤完成后再进行下一个步骤。此外,由于元素的数量是可变的,因此这种方法将未充分利用一些处理器。
相关文章:
- 为什么我不能让 3 个网络摄像头与 pthreads 并行运行?
- 我们如何并行运行算法的 n 个实例并以有效的方式计算结果函数的平均值?
- System Verilog DPI - 在 cpp 中运行并行线程,在 SV 中运行另一个并行线程
- 如果事件在仍在执行时再次设置,RegisterWaitForSingleObject 是否会并行运行回调?
- 如何并行运行与OpenGL并行的程序
- 在 2 个并行运行的脚本(python 和 C++)之间传递消息
- 在 C++ 中并行重复随机生成,避免多次运行重复
- 从Qt/C++-App并行运行两个Lua函数
- C++ - 谷歌测试 - 如何在不同的目录中并行运行所有测试?
- 如何使用 Turbo C++并行运行两个功能,一个用于键盘,一个用于鼠标?
- OpenMP 似乎不是并行运行的
- 使用 vector<thread> 和 .join() 未并行运行的多线程C++程序
- 最大线程数 - 如何确定C++线程是否并行运行?
- 并行和顺序运行代码时会产生不同的结果
- 如何在for循环(C )中运行并行线程
- 等待条件变量后未并行运行的线程
- 单元测试任务使用 QThreadPool 并行运行
- MFC多线程程序可以以并行方法运行
- 为依赖于先前值的矩阵运行并行代码
- OpenMP -在并行代码中运行并行代码