OpenMP* WORKSHARE 现在可与英特尔® Fortran 编译器 15.0 并行

英特尔® Fortran 编译器 15.0 现可为包含阵列分配的 OpenMP WORKSHARE 和 PARALLEL WORKSHARE 结构的指定实例生成多线程代码。  很显然,它们是使用 OpenMP SINGLE 结构进行部署,这表示仅可生成单线程代码。

 

OMP WORKSHARE 结构的数据块内的语句并非总是生成多线程代码。 一些语句进行并行化;另一些语句不进行并行化,而在 OMP SINGLE 结构内按顺序执行,以保持 WORKSHARE 的语义正确。

 

例如:

 

  • 简单阵列分配(如 A = B + C)进行并行化。
  • 带有重叠的简单阵列分配(如 A = A + B + C)进行并行化。
  • 带有用户定义的函数调用的阵列分配进行并行化,如 A = A + F (B)。 F 必须是 ELEMENTAL。
  • 右侧带有阵列切片的阵列分配(如 A = A + B(1:4) + C(1:4))进行并行化。 如果左侧下限、阵列切片下限或右侧阵列切片的步长是 1,那么语句将无法进行并行化。
  • 向阵列切片进行分配无法进行并行化。
  • 标量分配无法进行并行化,因为没有需要进行并行处理的任务。
  • FORALL 和 WHERE 结构无法进行并行化。

 

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.