关于OpenMP中的任务

时间:2017-03-20 14:27:02

标签: multithreading fortran openmp

在我当前的代码中我使用两个OpenMP部分,只有两个线程 如下:

!$omp parallel NUM_THREADS(2)                                                                                                                                                     
!$omp sections
!$omp section
   do work1
!$omp section
   do work2
!$omp end sections
!$omp end parallel

work1work2更耗时,并且因为sections构造需要两个线程完成其同步任务,work1成为限制步骤,并且一个线程浪费了大部分时间。

我想使用更灵活的构造,例如task,但我不知道是不是 有可能做到以下,如果是这样,该怎么做。首先,从两个线程开始(每个线程1个任务,如sections构造中),一个解决work1,另一个work2。其次,只要最简单的任务work2完成,就可以使用自由线程来加速work1

感谢。

0 个答案:

没有答案