当前位置: 首页 > 知识库问答 >
问题:

嵌套并行for循环:“并行内部for循环作为函数”中的“并行外部for循环”

蔺弘
2023-03-14

我想在一个并行外部循环中运行一个包含for循环(应该并行运行)的函数。因此看起来如下所示:

void myfunction(){
    ...
    #pragma omp parallel for
    for (int i=0;i<10;i++){
        do something...
    }
}


int main(){
    #pragma omp parallel for
    for(int i=0;i<5;i++){
        myfunction();
    }
}

给定上面的代码,我希望在main()函数中为循环创建5个并行线程,并且希望这5个线程中的每个线程创建另一个k线程来运行自己的并行for循环。

共有1个答案

公冶峰
2023-03-14

您需要启用嵌套并行:

void myfunction(){

    #pragma omp parallel for
    for (int i=0;i<10;i++){
        ...
    }
}


int main(){

    omp_set_nested(1);       // Enable nested parallelism    
    omp_set_num_threads(5); // Use 5 threads for all parallel regions

    #pragma omp parallel for
    for(int i=0;i<5;i++)
    {

        myfunction();
    }
}
 类似资料:
  • 问题内容: 我听说Java 8提供了许多有关并发计算的实用程序。因此,我想知道并行化给定for循环的最简单方法是什么? 问题答案: 在流上阅读,它们都是新的流行。 特别注意并行性: “具有显式for循环的处理元素本质上是串行的。流通过将计算重新格式化为聚合操作的流水线,而不是作为对每个单独元素的命令性操作来促进并行执行。所有流操作都可以串行或并行执行。 ” 综上所述,没有并行的for循环,它们本质

  • 我听说Java8提供了很多关于并发计算的实用程序。因此,我想知道并行给定for循环的最简单方法是什么?

  • 我试图在for循环中获得for循环,因此输出如下: 我希望输出显示一个正方形 我不知道它为什么不这样做。下面是我的代码:

  • 我有一个python for循环,它执行一个bash脚本,如下所示(我将其简化为只包含需要显示的内容),我需要它在for循环中同时运行所有这些bash脚本,但要等到它们全部完成后才能继续串联。bash脚本是我唯一希望并行运行的部分。它是在同一for循环的下游做一些需要串联完成的事情。这可能吗? 以下是系列作品。没有脚本的并行执行,因为。如果我删除. etc(),它几乎立即出错,下游的任何东西都不再

  • 我对python中双for循环的使用感到困惑,这是我的代码: 输出如下: 它只对外循环的第一个值执行内循环,为什么会发生这种情况?我怎样才能让它在第一个和第二个变量的所有组合上循环?

  • 我想在Python2.7中并行化两个嵌套的for循环,但我自己没有成功。我不知道如何接近什么是并行化的定义。 总之,这里是单处理器代码: