Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference

ID 767251
Date 3/22/2024
Public
Document Table of Contents

TARGET PARALLEL DO SIMD

OpenMP* Fortran Compiler Directive: Specifies a TARGET construct that contains a PARALLEL DO SIMD construct and no other statement.

Syntax

!$OMP TARGET PARALLEL DO SIMD [clause[[,] clause] ... ]

      do-loop

[!$OMP END TARGET PARALLEL DO SIMD]

clause

Can be any of the clauses accepted by the TARGET or PARALLEL DO SIMD directives, except for the COPYIN clause.

do-loop

Is one or more DO iterations (DO loops). The DO iteration cannot be a DO WHILE or a DO loop without loop control. The DO loop iteration variable must be of type integer.

All loops associated with the construct must be structured and perfectly nested; that is, there must be no intervening code and no other OpenMP* Fortran directives between any two loops.

The iterations of the DO loop are distributed across the existing team of threads. The values of the loop control parameters of the DO loop associated with a DO directive must be the same for all the threads in the team.

You cannot branch out of a DO loop associated with a DO SIMD directive.

If the END TARGET PARALLEL DO SIMD directive is not specified, an END TARGET PARALLEL DO SIMD directive is assumed at the end of do-loop.

The restrictions for the TARGET and PARALLEL DO SIMD constructs apply to this directive except for the following:

  • If any IF clause in the directive includes a directive-name-modifier then all IF clauses in the directive must include a directive-name-modifier.

  • At most one IF clause with no directive-name-modifier can appear on the directive.

  • At most one IF clause with the PARALLEL directive-name-modifier can appear on the directive.

  • At most one IF clause with the TARGET directive-name-modifier can appear on the directive.