【发布时间】:2017-10-22 10:50:33
【问题描述】:
试图减少我一直在处理的程序的时间。下面是我的代码的一部分,其中元素相互比较以产生计算。然后将此计算结果打印到控制台。
#pragma omp parallel for
for (int i = 0; i < numberOfStuff - 1; i++) {
/*
[10]
*/
for (int j = i + 1; j < numberOfStuff ; j++) {
double calc= stuffCompared(b[i], b[j]);
printf("%2d %2d -> %.20lf\n", i, j, calc);
}
}
我的问题是尝试在控制台上按顺序打印这些结果,但同时也减少了我的程序运行所需的时间。
我尝试将结果存储到数组中。事实证明,当打印到控制台时,这对性能时间的成本很高。我也尝试使用 omp 命令,如下所示...
#pragma omp parallel for ordered
...
#pragma omp ordered
printf("%2d %2d -> %.20lf\n", i, j, calc);
... 对于 printf 但发现它并不总是产生有序的结果 我可以按顺序实现,但会产生更好的时间性能。
如果我是 OpenMP 和并行编程的新手,我将不胜感激。
【问题讨论】:
标签: c++ performance parallel-processing openmp