【发布时间】:2011-07-22 16:16:52
【问题描述】:
我正在尝试使用 OpenMP 并行化 Floyd-Warshall 算法(基本上就地编辑 2D 数组),但我怀疑我是否以最好的方式处理它,这就是我所拥有的远:
#pragma omp parallel for private(i, j, k) shared(g)
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < n; j++ ) {
for ( k = 0; k < n; k++ ) {
g->A[j][k] = imin( g->A[j][k], g->A[j][i] + g->A[i][k] );
}
}
}
有什么想法可以让我更好地利用 OpenMP?目前这只是运行时间的一半,这肯定可以改进。
另外,如果有人对用于并行化的其他技术有任何建议,我会全力以赴。我考虑过 MPI,但我必须让我的整个 main 函数并行,对吗?
谢谢。
编辑
上面的代码不起作用,下面的答案说明了原因。
【问题讨论】:
标签: c parallel-processing openmp nested-loops