Visible to Intel only — GUID: GUID-A9B9396B-3984-4DAA-887E-F5493F12B255
Visible to Intel only — GUID: GUID-A9B9396B-3984-4DAA-887E-F5493F12B255
DECLARE SIMD
OpenMP* Fortran Compiler Directive: Creates a version of a function that can process multiple arguments using Single Instruction Multiple Data (SIMD) instructions from a single invocation from a SIMD loop.
Syntax
!$OMP DECLARE SIMD(routine-name) [clause[[,] clause]... ]
routine-name |
Is the name of a routine (a function or subroutine). It cannot be a generic name; it must be a specific name. It also cannot be a procedure pointer or an entry name. |
clause |
Is an optional vectorization clause. It can be one or more of the following:
|
The DECLARE SIMD construct enables the creation of SIMD versions of the specified subroutine or function. You can use multiple DECLARE SIMD constructs in a single procedure to produce more than one SIMD version of a procedure. These versions can be used to process multiple arguments from a single invocation from a SIMD loop concurrently.
DECLARE SIMD is a pure directive, so it can appear in a Fortran PURE procedure.
When routine-name is executed, it cannot have any side-effects that would change its execution for concurrent iterations of a SIMD chunk. When the routine is called from a SIMD loop, it cannot cause the execution of any OpenMP* Fortran construct.
If a DECLARE SIMD directive is specified for a routine name with explicit interface and for the definition of the routine, they must match. Otherwise, the result is unspecified.
You cannot use procedure pointers to access routines created by the DECLARE SIMD directive.
You can only specify a particular variable in at most one instance of a UNIFORM or LINEAR clause.