インテル® Fortran コンパイラー 14.0 ユーザー・リファレンス・ガイド
Intel® Fortran provides OpenMP* Fortran compiler directives that comply with OpenMP Fortran Application Program Interface (API) specification Version 3.1 and some features of OpenMP Fortran Application Program Interface (API) specification Version 4.0.
To use these directives, you must specify compiler option -openmp (Linux* OS and OS X*) or /Qopenmp (Windows* OS).
Options that use OpenMP* are available for both Intel® microprocessors and non-Intel microprocessors, but these options may perform additional optimizations on Intel® microprocessors than they perform on non-Intel microprocessors. The list of major, user-visible OpenMP constructs and features that may perform differently on Intel® microprocessors vs. non-Intel microprocessors includes: locks (internal and user visible), the SINGLE construct, barriers (explicit and implicit), parallel loop scheduling, reductions, memory allocation, thread affinity, and binding.
This section discusses data scope attribute clauses, conditional compilation rules, nesting and binding rules, and the following directives:
Specifies that a specific memory location is to be updated atomically.
Synchronizes all the threads in a team.
Restricts access for a block of code to only one thread at a time.
Generates a SIMD procedure.
Causes the creation of a device-specific version of a named routine that can be called from a target region. This directive only applies to Intel® MIC Architecture.
Specifies that loop iterations will be executed by thread teams in the context of their implicit tasks.
Specifies that the iterations of the immediately following DO loop must be executed in parallel.
Specifies a loop that can be executed concurrently using SIMD instructions.
Specifies synchronization points where the threads in a team must have a consistent view of memory.
Specifies a block of code to be executed by the master thread of the team.
Specifies a block of code that the threads in a team must execute in the natural order of the loop iterations.
Defines a parallel region.
Defines a parallel region that contains a single DO directive.
Specifies a loop that can be executed concurrently using SIMD instructions. It provides a shortcut for specifying a PARALLEL construct containing one SIMD loop construct and no other statement.
Defines a parallel region that contains a single SECTIONS directive.
Defines a parallel region that contains a single WORKSHARE directive.
Specifies that the enclosed SECTION directives define blocks of code to be divided among threads in a team.
Requires and controls SIMD vectorization of loops.
Specifies a block of code to be executed by only one thread in a team at a time.
Creates a device data environment and executes the construct on the same device. This directive only applies to Intel® MIC Architecture.
Creates a device data environment for the extent of the region. This directive only applies to Intel® MIC Architecture.
Makes the list items in the device data environment consistent with their corresponding original list items. This directive only applies to Intel® MIC Architecture.
Defines a task region.
Specifies a wait for the completion of all child tasks of the current task and all of their descendant tasks.
Specifies a wait on the completion of child tasks generated since the beginning of the current task.
Specifies that the current task can be suspended at this point in favor of execution of a different task.
Creates a group of thread teams to be used in a parallel region.
Makes named common blocks private to each thread, but global within the thread.
Divides the work of executing a block of statements or constructs into separate units.
The OpenMP parallel directives can be grouped into the categories shown in the following table:
Category |
Description |
---|---|
Parallel region |
Defines a parallel region: PARALLEL |
Task region |
Defines a task region: TASK |
Work-sharing |
Divide the execution of the enclosed block of code among the members of the team that encounter it: DO, SECTIONS, SINGLE, and WORKSHARE |
Combined parallel work-sharing |
Shortcut for denoting a parallel region that contains only one work-sharing construct: PARALLEL DO and PARALLEL SECTIONS |
Synchronization |
Provide various aspects of synchronization; for example, access to a block of code, or execution order of statements within a block of code: ATOMIC, BARRIER, CRITICAL, FLUSH, MASTER, ORDERED, TASKGROUP, TASKWAIT, and TASKYIELD |
Data Environment |
Control the data environment during the execution of parallel constructs: for example, THREADPRIVATE |
Coprocessor control |
Control code execution on one or more coprocessors: DISTRIBUTE, DECLARE TARGET, TARGET, TARGET DATA, TARGET UPDATE, and TEAMS |
Vectorization control |
Control code execution on vector hardware: DECLARE SIMD, DO SIMD, PARALLEL DO SIMD, and SIMD |
Note that certain general directives and rules can affect DO loops. For more information, see Rules for General Directives that Affect DO Loops.
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Notice revision #20110804 |
The OpenMP web site http://www.openmp.org/