我正在学习OpenMP,在学习更多关于循环并行的知识时,我了解到在OpenMP - 中禁用了“嵌套并行#pragma omp parallel for
for (int i =然而,在StackOverflow对类似问题的一个帖子的回答中,我读到这种making parallelism不起作用,因为所有可用的线程都已经被上层迭代保留了。我不知道第二个逻辑是否正确,因为如果是正确的,我们可以使用指定的线程数吗?关
我已经使do循环与OpenMP并行,如下所示 !$omp end parallel do 现在,在大多数情况下,循环中的迭代次数比可用处理器/线程的数量要少,并且循环中调用的子例程可以并行调用。那么,有没有办法在并行do循环中并行调用子例程呢?$omp end taskend subroutine 这个程序完全按照我想要的那样工作,使用任务指令,使用剩余的线程,提高了
如果我在主程序内部分叉,然后在单个指令中调用子例程,那么如果我在这个子程序中输入一个OMP并行指令,行为是什么? // expensive calculation on array element A[i]由于evolve()经常被调用,在这里分叉会导致很大的开销,所以我只想做一次,然后从单个线程调用evolve(),并将对do_stuff()的调用工作拆分到现有线程上。我得到了大约80%-