【发布时间】:2018-07-17 21:53:37
【问题描述】:
我想使用 OpenMP 在 for 循环中并行化任务。但是,我不想使用#pragma omp parallel for,因为 (i+1)th 迭代的结果取决于 (i)th 迭代的输出。我试图在代码中生成线程,但是每次创建和销毁它们的时间都非常长。我的代码的抽象描述是:
int a_old=1;
int b_old=1;
int c_old=1;
int d_old=1;
for (int i=0; i<1000; i++)
{
a_new = fun(a_old); //fun() depends only on the value of the argument
a_old = a_new;
b_new = fun(b_old);
b_old = b_new;
c_new = fun(c_old);
c_old = c_new;
d_new = fun(d_old);
d_old = d_new;
}
我如何有效地在每次迭代中使用线程并行计算a_new, b_new, c_new, d_new 的新值?
【问题讨论】:
-
假设 a、b、c 和 d 相互独立,您可以有 4 个不同的线程,每个变量运行自己的
for循环
标签: c parallel-processing openmp