我读到:"这个结构(Omp workshare)用于通过将任务划分为工作单元来并行化数组操作。每个这样的工作单元只由并行区域中存在的一个可用线程处理。(选自《雷,S.》(2019)。Fortran 2018与并行编程(第1版)。CRC新闻")。那么,"omp workshare"one_answers"omp sections"的实际区别是什么呢?
p。S:我用的是fortran,所以如果你要用例子,请用fortran代码。
OpenMP Workshare与section完全不同,即使在你的书中非常简短的阅读也应该揭示它们的区别。
使用节,你可以定义代码的不同部分,这些部分可以并发地完成。
!$omp parallel
!$omp sections
!$omp section
some commands
!$omp sections
some different independent commands
!$omp end sections
!$omp end parallel
对于workshare,您说Fortranforall
或where
构造或数组操作可以由OpenMP线程分部分进行评估。
real, dimension(:,:,:) :: A, B, C
...
!$omp parallel
!$omp workshare
A = B * C
!$omp end workshare
!$omp end parallel
A = B * C
数组的操作将被分成几个小的部分,每个线程将计算其中的一些部分。