我遇到了以下问题。我有一个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?
答案 0 :(得分:0)
首先,您的代码既没有并行部分也没有omp任务指令。 这取决于您如何创建任务。 一段代码可以使用'单个'执行一次。 omp指令。 但是,在您的情况下,很难确定您想要做什么。 没有循环,因此A和B将被执行一次。 所以,请更新您的示例,然后我们将能够纠正它。