OpenMP:如何指定任务执行的频率

时间:2018-03-06 10:02:30

标签: c parallel-processing openmp

我遇到了以下问题。我有一个4核CPU和2个不同的任务A和B.A的工作量明显高于B,但是,必须只执行一次。 B的工作量非常小,但必须多次执行。

void A(int data) {
    // do a lot
}

void B(int data) {
    // do not so much
}

int main() {

    int n = 100;

    int data_a;
    int data_b[n];

    #pragma omp ?ONCE? // run task A once
    A(data_a);
    #pragma omp ?N_TIMES? // run task B n times
    B(data_b[i]);

    return 0;
}

如何告诉OpenMP并行运行4-Cores上的A和B?

1 个答案:

答案 0 :(得分:0)

首先,您的代码既没有并行部分也没有omp任务指令。 这取决于您如何创建任务。 一段代码可以使用'单个'执行一次。 omp指令。 但是,在您的情况下,很难确定您想要做什么。 没有循环,因此A和B将被执行一次。 所以,请更新您的示例,然后我们将能够纠正它。