【发布时间】:2015-03-18 13:16:25
【问题描述】:
我有一个关于并行性的问题。我有一部分代码应用了并行化的概念,这部分代码必须在循环中重复 N 次,但我无法在循环中初始化 MPI,因为显示“MPI_Init(89): 无法调用 MPI_INIT 或MPI_INIT_THREAD 不止一次”,如果我在循环之前启动每个进程,它将处理所有循环,这不是目标。
for (int i = 0; i <N; i ++)
{
the parallel area
}
我希望对于循环中的每个 i,K 个进程执行并行区域。
【问题讨论】:
-
发布所有相关代码。在我看来,您将 MPI 与 OpenMP 混淆了。在 MPI 中,内存不共享(在最简单的情况下),所有进程都通过
MPI_Init生成一次(在最简单的情况下)。 -
我的程序的想法是我有 N 个数据,在给定的第 n 个计算结果取决于对第 (n-1) 个数据的计算结果,因此对每个数据进行计算数据必须是顺序的,对于每个数据 n 我可以将其划分为子独立数据,我可以应用并行化。
-
你了解 MPI hello world 示例吗?
-
第n个值是数组吗?
-
yes 是一个数组,它依赖于第 (n-1) 个数组的计算结果,我将根据数据 n 进行并行计算。
标签: c parallel-processing mpi