【问题标题】:Omp sections vs Omp workshareOmp 部分与 Omp 工作共享
【发布时间】:2023-03-30 23:39:01
【问题描述】:

我读到:“此构造 (Omp workshare) 用于通过将任务划分为工作单元来并行化数组操作。每个这样的工作单元仅由并行区域中存在的可用线程之一处理。” (来自“Ray, S. (2019). Fortran 2018 with Parallel Programming (1st ed.). CRC Press')。那么“omp workshare”和“omp section”之间的实际区别是什么?

P.S:我使用的是 gfortran,所以如果您使用示例,请使用 fortran 代码。

【问题讨论】:

    标签: parallel-processing fortran openmp


    【解决方案1】:

    OpenMP Workshare 与章节完全不同,即使是在您的书中进行非常简短的阅读也应该能发现其中的区别。

    使用部分定义代码的不同部分,可以同时完成。

    !$omp parallel
    
    !$omp sections
    !$omp section
      some commands
    !$omp sections
      some different independent commands
    !$omp end sections
    
    !$omp end parallel
    

    对于 workshare,您是说 Fortran forallwhere 构造或数组操作可以由 OpenMP 线程按部分进行评估。

    real, dimension(:,:,:) :: A, B, C
    
    ...
    
    !$omp parallel
    
    !$omp workshare
    A = B * C
    !$omp end workshare
    
    !$omp end parallel
    

    A = B * C 数组操作将被分成小部分,每个线程将评估其中的一些部分。

    【讨论】:

    • 非常感谢您提供的信息。
    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2021-07-04
    • 2016-12-22
    • 2021-08-20
    • 1970-01-01
    相关资源
    最近更新 更多