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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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?

答案

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

以上是关于OpenMP:如何指定任务执行的频率的主要内容,如果未能解决你的问题,请参考以下文章

我可以将多个线程分配给 OpenMP 中的代码段吗?

OpenMP 矩阵向量乘法仅在一个线程上执行

OpenMP 和 Python

OpenMP 中的线程任务调度

结合 OpenMP 和 OpenCL

如何为Fibonacci算法设计并行代码,但没有openmp任务?