インテル® Fortran コンパイラーの Fortran 言語と OpenMP* 機能

インテル® Fortran コンパイラー

この記事は、インテル® デベロッパー・ゾーンに公開されている「Fortran Language and OpenMP* Features Implemented in Intel® Fortran Compiler」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


インテル® oneAPI HPC ツールキット 2023.0 に含まれるインテル® Fortran コンパイラー (ifx) では、インテル® Fortran コンパイラー・クラシック (ifort) と同等の機能が含まれました。ifx は、インテル® Fortran コンパイラー・クラシック (ifort) のフロントエンドとランタイム・ライブラリーをベースに、LLVM ベースのバックエンド・コンパイラー・テクノロジーを使用しています。

この記事では、ifx の各リリースで実装されている Fortran 言語と OpenMP* 機能について説明します。

このリリースの ifx のバージョン番号は 2023.0.0 です。

  • FORTRAN 77、Fortran90/95、Fortran 2003、Fortran 2008 および Fortran 2018 言語標準を完全に実装しています。
  • ほとんどの OpenMP* 4.5、OpenMP* 5.0/5.1 ディレクティブおよびオフロード機能をサポートし、OpenMP* 6.0 の一部の機能も追加しています。

その他の参考情報:

  • ifx および ifort はバイナリー (.o/.obj) とモジュール (.mod) ファイルの互換性があります。ifort で生成されたバイナリーやライブラリーは、ifx でビルドされたバイナリーやライブラリーとリンクできます。また、一方のコンパイラーで生成された .mod ファイルは、他方のコンパイラーで使用できます (64 ビット・ターゲットのみ)。
  • どちらのコンパイラーも同じランタイム・ライブラリーを使用します。
  • ifx でコンパイルしたアプリケーションのパフォーマンスは、ifort でコンパイルしたアプリケーションのパフォーマンスに匹敵する場合も匹敵しない場合もあります。ifx のパフォーマンスの改善は、2023年の各リリースで引き続き行われる予定です。

インテル® oneAPI DPC++/C++ コンパイラー (dpcpp と icx) の OpenMP* 実装に関する同様の情報は、こちらを参照してください。

インテル® oneAPI 2023 で利用可能な機能

ifx バージョン 2023.3.0 では、以下の Fortran 標準を完全に実装しました。

  • Fortran 95
  • Fortran 2003
  • Fortran 2008
  • Fortran 2018

OpenMP* 4.5

oneAPI 2023.0 (コンパイラー・バージョン 2023.0.0) では、hint 節を除いてすべての機能を実装しました。

OpenMP* 5.0/5.1

機能 2023.0.0 (太字は新機能)
if (parallel: スカラー論理式)
TEAMS の REDUCTION 節
ALLOCATE 節
!$omp loop
!$omp teams loop (結合ディレクティブ)
!$omp parallel loop (結合ディレクティブ)
!$omp target teams loop (結合ディレクティブ)
!$omp parallel target teams loop (結合ディレクティブ)
!$omp simd の NONTEMPORAL 節
IN_REDUCTION 節
USE_DEVICE_ADDR 節
!$omp taskgroup の TASK_REDUCTION 節
!$omp allocate
!$omp declare variant
if (simd: スカラー論理式)
!$omp scan
!$omp requires
!$omp tile ×
メタディレクティブ ×
task reduction 修飾子
scan および default reduction 修飾子
conditional lastprivate 修飾子 ×
ORDER 節 (OMP LOOP で有効)
mutexinoutset および depobj dependence
in、out、および inout dependence
AFFINITY 節 ×
DETACH 節 ×
USES_ALLOCATORS 節 ×
DECLARE MAPPER および mapper-identifier スカラー変数、固定長配列
DEVICE_TYPE 節 ×
!$omp parallel master (結合ディレクティブ)
!$omp master taskloop (結合ディレクティブ)
!$omp master taskloop simd (結合ディレクティブ)
!$omp parallel master taskloop (結合ディレクティブ)
!$omp parallel master taskloop simd (結合ディレクティブ)
!$omp parallel masked (結合ディレクティブ)
!$omp masked taskloop (結合ディレクティブ)
!$omp masked taskloop simd (結合ディレクティブ)
!$omp parallel masked taskloop (結合ディレクティブ)
!$omp parallel masked taskloop simd (結合ディレクティブ)
!$omp taskwait の DEPEND 節 DEPEND タイプ mutexinoutset、inoutset、および depopbj
!$omp atomic の acq_rel、release、acquire、および relaxed memory-order
!$omp atomic の seq_cst memory-order
!$omp atomic の HINT 節 ×
!$omp flush の acq_rel、release、および acquire memory-order ×
!$omp depobj
if (cancel: スカラー論理式) ×
MASKED 構造の FILTER 節
UNROLL 構文
SCOPE 構文

OpenMP* 6.0

機能 2023.0.0 (太字は新機能)
DISPATCH の INTEROP 節
DECLARE VARIANT の APPEND_ARGS 節の PREFER_TYPE


インテル® oneAPI 2022 で利用可能な機能

Fortran 95

Fortran 95 以前の Fortran 標準は完全に実装されています。

Fortran 2003

パラメーター化された派生型 (PDT) を含め、コンパイラー・バージョン 2022.1.0 で完全に実装されました。

Fortran 2008

Co-Array を含め、コンパイラー・バージョン 2022.2.0 で完全に実装されました。

Fortran 2018

機能 2022.2.0 2022.1.0 2022.0.0
Co-Array 機能
Co-Array のチーム: FORM TEAM 文、CHANGE TEAM 構造、SYNC TEAM 文 × ×
Co-Array の組込み関数: TEAM_NUMBER、GET_TEAM、STOPPED_IMAGES、FAIL_IMAGES、COSHAPE、および IMAGE_STATUS × ×
NUM_IMAGES、IMAGE_INDEX、THIS_IMAGE 組込み関数の TEAM/TEAM_NUMBER 引数 × ×
イメージセレクターの TEAM または TEAM_NUMBER 指定子 × ×
イメージセレクターと CRITICAL 構造の MOVE_ALLOC と指定子の STAT および ERRMSG 引数 × ×
失敗したイメージ × ×
アトミック・サブルーチン × ×
集合サブルーチン × ×
EVENT × ×
CRITICAL 構造からの EXIT × ×
組込み関数の拡張
ALL、ANY、IALL、IANY、IPARITY、MAXLOC、MAXVAL、MINLOC、MINVAL、NORM2、PARITY、PRODUCT、SUM、および THIS_IMAGE 組込み関数の DIM 引数が現在の OPTIONAL 仮引数

×
変数定義コンテキストでの PURE プロシージャーの VALUE 仮引数 ×
GET_COMMAND_ARGUMENT、GET_ENVIRONMENT_VARIABLE、および GET_COMMAND 組み込みプロシージャーの ERRMSG 引数 ×
OUT_OF_RANGE 組込み関数 ×
RANDOM_INIT 組込み関数 ×
REDUCE 組込み関数 × × ×
KIND= なしの CMPLX 関数の新しい形式 ×
異なる KIND の SIGN 関数引数 ×
組込み関数の INTEGER および LOGICAL 引数はデフォルト種別でなくてもよい ×
入出力の拡張
E および D、EN、ES、G でフィールド幅 0 を許可 ×
指数幅 e が 0 のデータ編集記述子 ×
Fortran 2018 および ISO/IEC/IEEE 60559:2011 の規定に従って RN 編集記述子を直近に丸める ×
EX 編集記述子で 16 進数のデータを許可 ×
非前進入出力での SIZE= の指定 ×
実行/制御の拡張
STOP または ERROR STOP の QUIET 指定子 ×
可変 STOP および ERROR STOP コード ×
PURE プロシージャーの ERROR STOP ×
PURE プロシージャーの VALUE 仮引数の定義 ×
宣言/指定の変更
オブジェクトの初期化でのオブジェクトの定数プロパティーの使用 ×
指定式に IS0_C_BINDING、IEEE_ARITHMETIC、および IEEE_EXCEPTIONS 組込みモジュールからの変換組込み関数への参照を含めることができる ×
ISO_C_BINDING、IEEE_ARITHMETIC、および IEEE_EXCEPTIONS 組込みモジュールからの変換組込み関数を指定式で許可 ×
定義された代入および操作プロシージャーの仮引数が VALUE 属性を含む場合、INTENT(IN) 属性は不要 ×
配列コンストラクターとデータ文の暗黙の DO ループでループ変数の型と種別を指定 ×
IMPLICIT NONE (EXTERNAL) ×
GENERIC 文を使用したジェネリック・インターフェイス宣言 ×
DO CONCURRENT 文の変数の局所性 × ×
非標準の組込み関数とモジュールを非標準と診断 ×
内部プロシージャーと BLOCK 構造の IMPORT ALL、IMPORT NONE、および IMPORT ONLY ×
PUBLIC および PRIVATE 文のモジュール名 ×
NON_RECURSIVE キーワード ×
デフォルトの再帰 (assume recursion オプションを指定した場合) ×
ISO/IEC/IEEE 754 2011 浮動小数点バインド
シグナル型 NaN を含む浮動小数点比較を行う assume ieee_compare オプション
新しいプロシージャー: IEEE_SET_ROUNDING_MODE、IEEE_FMA、IEEE_SIGNBIT、IEEE_NEXT_UP、IEEE_NEXT_DOWN、IEEE_GET_MODES および IEEE_SETMODES、IEEE_MAX_NUM、IEEE_MAX_NUM_MAG、IEEE_MIN_NUM、IEEE_MIN_NUM_MAG、IEEE_QUIET_EQ、ITTE_QUIET_GE、IEEE_QUIET_GT、IEEE_QUIET_LE、IEEE_QUIET_LT、IEEE_QUIET_NE、IEEE_SIGNALING_EQ、IEEE_SIGNALING_GE、IEEE_SIGNALING_GT、IEEE_SIGNALING_LE、IEEE_SIGNALING_LT、IEEE_QUIET_NE、IEEE_SIGNALING_NE、IEEE_INT および IEEE_REAL、IEEE_SUPPORT_NORMAL × ×
IEEE_ARITHMETIC 組込みモジュールへの名前付き定数 IEEE_ROUND_TYPE および IEEE_AWAY の追加 × ×
IEEE_RINT 関数のオプションの ROUND 引数 × ×
IEEE_EXCEPTIONS モジュールで定義されている派生型 IEEE_EXCEPTIONS × ×
SUBNORMAL は DENORMAL と同義 × ×
IEEE_GET_ROUNDING_MODE および IEEE_SET_ROUNDING_MODE のオプションの RADIX 引数 × ×
C との互換性の拡張
ISO_C_BINDING の C_PTRDIFF_T 種別 ×
C_F_PROCPOINTER を除く ISO_C_BINDING のすべての組込みプロシージャーは PURE
ランク引き継ぎ配列と型引継ぎ
SELECT RANK 構造
言語の進化
ノンブロック DO と算術 IF の削除 (インテル拡張として引き続き利用可能)
COMMON、EQUIVALENCE、BLOCKDATA の廃止
ラベル形式の DO ループの廃止
特定のプロシージャー名の廃止

OpenMP* 4.5

nowait、depend、hint 節、および depend 節修飾子を除いて、すべての機能を oneAPI 2021.4 (コンパイラー・バージョン 2021.3.0) で実装しました。複素数型の reduction は、コンパイラー・バージョン 2022.2.0 で実装されました。

OpenMP* 5.0/5.1

機能 2022.2.0 2022.1.0 2022.0.0
if (parallel: スカラー論理式)
TEAMS の REDUCTION 節
ALLOCATE 節
!$omp loop
!$omp teams loop (結合ディレクティブ)
!$omp parallel loop (結合ディレクティブ)
!$omp target teams loop (結合ディレクティブ)
!$omp parallel target teams loop (結合ディレクティブ)
!$omp simd の NONTEMPORAL 節
IN_REDUCTION 節
USE_DEVICE_ADDR 節
!$omp taskgroup の TASK_REDUCTION 節
!$omp allocate
!$omp declare variant
if (simd: スカラー論理式) × ×
!$omp scan × × ×
!$omp requires
メタディレクティブ × × ×
task reduction 修飾子
scan および default reduction 修飾子
conditional lastprivate 修飾子 × × ×
ORDER 節 (OMP LOOP で有効) × × ×
mutexinoutset および depobj dependence × × ×
in、out、および inout dependence
AFFINITY 節 × × ×
DETACH 節 × × ×
USES_ALLOCATORS 節 × × ×
DECLARE MAPPER および mapper-identifier スカラー変数 スカラー変数 ×
DEVICE_TYPE 節 × × ×
!$omp parallel master (結合ディレクティブ)
!$omp master taskloop (結合ディレクティブ)
!$omp master taskloop simd (結合ディレクティブ)
!$omp parallel master taskloop (結合ディレクティブ)
!$omp parallel master taskloop simd (結合ディレクティブ)
!$omp parallel masked (結合ディレクティブ)
!$omp masked taskloop (結合ディレクティブ)
!$omp masked taskloop simd (結合ディレクティブ)
!$omp parallel masked taskloop (結合ディレクティブ)
!$omp parallel masked taskloop simd (結合ディレクティブ)
!$omp taskwait の DEPEND 節 × × ×
!$omp atomic の acq_rel、release、acquire、および relaxed memory-order
!$omp atomic の seq_cst memory-order
!$omp atomic の HINT 節 × × ×
!$omp flush の acq_rel、release、および acquire memory-order × × ×
!$omp depobj × × ×
if (cancel: スカラー論理式) × × ×
MASKED 構造の FILTER 節 × ×
UNROLL 構文 × ×


インテル® oneAPI 2021 で利用可能な機能

ベータ版インテル® Fortran コンパイラーは、インテル® Fortran コンパイラー・クラシック (ifort) のフロントエンドとランタイム・ライブラリーをベースに、インテル® Fortran のフロントエンドと LLVM フレームワークを使用した新しいコンパイラーです。この新しいコンパイラーは「ifx」ドライバーを使用します。

現時点で、ifx は Fortran 95、Fortran 2003、および Fortran 2008 言語の機能と、ほとんどの OpenMP* 4.5 および OpenMP* 5.0/5.1 のディレクティブおよびオフロード機能をサポートしています。この記事では、各リリースで実装されている Fortran 言語と OpenMP* 機能について説明します。

Fortran 95

Fortran 95 以前の Fortran 標準は完全に実装されています。

Fortran 2003

要約: パラメーター化された派生型とユーザー定義 I/O (派生型 I/O または再帰的 I/O とも呼ばれる) を除いて実装が完了しました。

機能 2021.4.x 2021.3.x 2021.2.x 2021.1.x

データ拡張とオブジェクト指向

パラメーター化された派生型 × × × ×
プロシージャー・ポインター × × × ×
終了処理 〇*
名前で型にバインドされたプロシージャー
PASS 属性
演算子として型にバインドされたプロシージャー 〇*
型拡張子
型バインド・プロシージャーのオーバーライド
列挙子
ASSOCIATE 構造 〇*
型付きポリモーフィック・エンティティー 〇*
無制限のポリモーフィック・エンティティー ×
SELECT TYPE 構造
無指定バインドと抽象型
割付けスカラー
無指定長割付けスカラー
その他の拡張
構造コンストラクター ×
型として指定された汎用プロシージャー・インターフェイス
ALLOCATE 文
割付け配列の代入
割付けの転送
割付け配列の代入
割付けの転送
モジュールからのアクセスの制御
USE 文の演算子名の変更
ポインター代入
ポインター INTENT ×
VOLATILE 属性 × ×
IMPORT 文
組込みモジュール
コンピューティング環境へのアクセス
国際文字セットのサポート × × × ×
名前と文の長さ
2 進、8 進および 16 進定数
配列コンストラクター構文
宣言式と初期化式
複素数定数
組込み関数の変 ×
IEEE アンダーフローの制御 ×
別の IEEE クラス値 × × × ×
入出力の拡張
派生型入出力 × × × ×
非同期入出力 × ×
FLUSH 文
IOMSG= 指定子
ストリームアクセス入出力
ROUND= 指定子
DECIMAL= 指定子
SIGN= 指定子
整数指定子の種別型引数
再帰入出力
改行文字の組込み関数
IEEE 例外値の入力と出力
P 編集記述子の後のカンマ
C との相互運用性
組込み型の相互運用性
C ポインターとの相互運用性
C ポインターとの相互運用性 〇**
変数の相互運用性
プロシージャーの相互運用性
グローバルデータの相互運用性

〇* は既知の問題があることを示す。
〇** は派生型を値で C 構造体に渡す。

Fortran 2008

要約: Co-Aarray と変数として使用する POINTER 結果関数を除いて実行を完了しました。

機能 2021.4.x 2021.3.x 2021.2.x 2021.1.x
Co-Array × × × ×
派生型 Co-Array の ALLOCATABLE または POINTER コンポーネント × × × ×
パフォーマンスの拡張
DO CONCURRENT 〇 シリアルのみ 〇 シリアルのみ 〇 シリアルのみ 〇 シリアルのみ
CONTIGUOUS 属性
連続配列
データ宣言
最大ランク + corank <= 15
長整数 (18 桁または 64 ビット)
再帰型の割付けコンポーネント ×
暗黙形状配列
ポインター初期化 × ×
DATA 文の制限解除
FORALL インデックスの種別
組込み型 TYPE (組込み型) 指定子の TYPE 文
型バインド・プロシージャーの宣言 × × × ×
割付けでない非ポインター非 Co-Array での VALUE 属性の許可
PURE プロシージャーでは VALUE 属性の引数不要
ポリモーフィック変数の割付け × × × ×
データ・オブジェクトのアクセス
実部と虚部のアクセス
ポインター関数参照は可変 × × ×
ELEMENTAL 仮引数の制限解除
入出力
ファイルを開くときのユニットの検索
G0 編集記述子 × × × ×
無制限のフォーマット項目 ×
再帰入出力 × × × ×
実行制御
BLOCK 構造 × × ×
EXIT 文 ×
STOP コード
ERROR STOP
ビット処理の組込みプロシージャー
ビット・シーケンスの比較
結合シフト × × × ×
ビットのカウント
ビットのマスク
ビットのシフト ×
ビットのマージ ×
ビット変換関数 ×
組込みプロシージャーとモジュール
ストレージサイズ
選択した REAL KIND へのオプション引数 RADIX の追加
三角関数および双曲線組込み関数の拡張 × × × ×
REAL KIND の選択
双曲線組込み関数
ベッセル関数 × ×
誤差およびガンマ関数
ユークリッド・ベクトル・ノルム × × × ×
パリティー
コマンドラインの実行 × × ×
MINLOC および MAXLOC の BACK 引数 × × ×
配列の場所の検索 × × ×
文字列比較 ×
定数
COMPILER_VERSION
COMPILER_OPTIONS
C スタイルの sizeof 関数
ieee_selected_real_kind へのオプション引数の追加
プログラムとプロシージャー
モジュールとサブモジュール・データの SAVE 属性 ×
空の CONTAINS セクション
内部およびモジュール・プロシージャーの END 文の形式
実引数としての内部プロシージャー
POINTER または ALLOCATABLE 属性による汎用的な解決 ×
仮引数なしの null ポインターまたは割付けられていない割付け ×
PURE でない ELEMENTAL プロシージャー
ENTRY 文の非推奨
ソース形式
行頭のセミコロン

Fortran 2018

機能 2021.4.x 2021.3.x 2021.2.x 2021.1.x
Co-Array 機能
Co-Array のチーム: FORM TEAM 文、CHANGE TEAM 構造、SYNC TEAM 文 × × × ×
Co-Array の組込み関数: TEAM_NUMBER、GET_TEAM、STOPPED_IMAGES、FAIL_IMAGES、COSHAPE、および IMAGE_STATUS × × × ×
NUM_IMAGES、IMAGE_INDEX、THIS_IMAGE 組込み関数の TEAM/TEAM_NUMBER 引数 × × × ×
イメージセレクターの TEAM または TEAM_NUMBER 指定子 × × × ×
イメージセレクターと CRITICAL 構造の MOVE_ALLOC と指定子の STAT および ERRMSG 引数 × × × ×
失敗したイメージ × × × ×
アトミック・サブルーチン × × × ×
集合サブルーチン × × × ×
EVENT × × × ×
CRITICAL 構造からの EXIT × × × ×
組込み関数の拡張
ALL、ANY、IALL、IANY、IPARITY、MAXLOC、MAXVAL、MINLOC、MINVAL、NORM2、PARITY、PRODUCT、SUM、および THIS_IMAGE 組込み関数の DIM 引数が現在の OPTIONAL 仮引数 × × × ×
変数定義コンテキストでの PURE プロシージャーの VALUE 仮引数 × × × ×
GET_COMMAND_ARGUMENT、GET_ENVIRONMENT_VARIABLE、および GET_COMMAND 組み込みプロシージャーの ERRMSG 引数 × × × ×
OUT_OF_RANGE 組込み関数 × × × ×
RANDOM_INIT 組込み関数 × × × ×
REDUCE 組込み関数 × × × ×
KIND= なしの CMPLX 関数の新しい形式 × × × ×
異なる KIND の SIGN 関数引数 × × × ×
組込み関数の INTEGER および LOGICAL 引数はデフォルト種別でなくてもよい × × × ×
入出力の拡張
E および D、EN、ES、G でフィールド幅 0 を許可 × × × ×
指数幅 e が 0 のデータ編集記述子 × × × ×
Fortran 2018 および ISO/IEC/IEEE 60559:2011 の規定に従って RN 編集記述子を直近に丸める × × × ×
EX 編集記述子で 16 進数のデータを許可 × × × ×
非前進入出力での SIZE= の指定 × × × ×
実行/制御の拡張
STOP または ERROR STOP の QUIET 指定子 × × × ×
可変 STOP および ERROR STOP コード × × × ×
PURE プロシージャーの ERROR STOP × × × ×
PURE プロシージャーの VALUE 仮引数の定義 × × × ×
宣言/指定の変更
オブジェクトの初期化でのオブジェクトの定数プロパティーの使用 × × × ×
指定式に IS0_C_BINDING、IEEE_ARITHMETIC、および IEEE_EXCEPTIONS 組込みモジュールからの変換組込み関数への参照を含めることができる × × × ×
ISO_C_BINDING、IEEE_ARITHMETIC、および IEEE_EXCEPTIONS 組込みモジュールからの変換組込み関数を指定式で許可 × × × ×
定義された代入および操作プロシージャーの仮引数が VALUE 属性を含む場合、INTENT(IN) 属性は不要 × × × ×
配列コンストラクターとデータ文の暗黙の DO ループでループ変数の型と種別を指定 × × × ×
IMPLICIT NONE (EXTERNAL) × × × ×
GENERIC 文を使用したジェネリック・インターフェイス宣言 × × × ×
DO CONCURRENT 文の変数の局所性 × × × ×
非標準の組込み関数とモジュールを非標準と診断 × × × ×
内部プロシージャーと BLOCK 構造の IMPORT ALL、IMPORT NONE、および IMPORT ONLY × × × ×
PUBLIC および PRIVATE 文のモジュール名 × × × ×
NON_RECURSIVE キーワード × × × ×
デフォルトの再帰 (assume recursion オプションを指定した場合) × ×
ISO/IEC/IEEE 754 2011 浮動小数点バインド
シグナル型 NaN を含む浮動小数点比較を行う assume ieee_compare オプション × × ×
新しいプロシージャー: IEEE_SET_ROUNDING_MODE、IEEE_FMA、IEEE_SIGNBIT、IEEE_NEXT_UP、IEEE_NEXT_DOWN、IEEE_GET_MODES および IEEE_SETMODES、IEEE_MAX_NUM、IEEE_MAX_NUM_MAG、IEEE_MIN_NUM、IEEE_MIN_NUM_MAG、IEEE_QUIET_EQ、ITTE_QUIET_GE、IEEE_QUIET_GT、IEEE_QUIET_LE、IEEE_QUIET_LT、IEEE_QUIET_NE、IEEE_SIGNALING_EQ、IEEE_SIGNALING_GE、IEEE_SIGNALING_GT、IEEE_SIGNALING_LE、IEEE_SIGNALING_LT、IEEE_QUIET_NE、IEEE_SIGNALING_NE、IEEE_INT および IEEE_REAL、IEEE_SUPPORT_NORMAL × × × ×
IEEE_ARITHMETIC 組込みモジュールへの名前付き定数 IEEE_ROUND_TYPE および IEEE_AWAY の追加 × × × ×
IEEE_RINT 関数のオプションの ROUND 引数 × × × ×
IEEE_EXCEPTIONS モジュールで定義されている派生型 IEEE_EXCEPTIONS × × × ×
SUBNORMAL は DENORMAL と同義 × × × ×
IEEE_GET_ROUNDING_MODE および IEEE_SET_ROUNDING_MODE のオプションの RADIX 引数 × × × ×
C との互換性の拡張
ISO_C_BINDING の C_PTRDIFF_T 種別 × × × ×
C_F_PROCPOINTER を除く ISO_C_BINDING のすべての組込みプロシージャーは PURE × × × ×
ランク引き継ぎ配列と型引継ぎ × × × ×
SELECT RANK 構造 × × × ×
言語の進化
ノンブロック DO と算術 IF の削除 (インテル拡張として引き続き利用可能) × × × ×
COMMON、EQUIVALENCE、BLOCKDATA の廃止 × × × ×
ラベル形式の DO ループの廃止 × × × ×
特定のプロシージャー名の廃止 × × × ×

OpenMP* 4.5

nowait、depend、hint 節、reduction の複素数型、および depend 節修飾子を除いて、すべての機能を 2021.4.0 で実装しました。

OpenMP* 5.0/5.1

機能 2021.4.x 2021.3.x 2021.2.x 2021.1.x
if (parallel: スカラー論理式)
TEAMS の REDUCTION 節
ALLOCATE 節
!$omp loop
!$omp teams loop (結合ディレクティブ)
!$omp parallel loop (結合ディレクティブ)
!$omp target teams loop (結合ディレクティブ)
!$omp parallel target teams loop (結合ディレクティブ)
!$omp simd の NONTEMPORAL 節
IN_REDUCTION 節 × × ×
USE_DEVICE_ADDR 節
!$omp taskgroup の TASK_REDUCTION 節
!$omp allocate ×
!$omp declare variant 〇* ×
if (simd: スカラー論理式) × × × ×
!$omp scan × × × ×
!$omp requires × × × ×
メタディレクティブ × × × ×
task reduction 修飾子 × × × ×
scan および default reduction 修飾子
conditional lastprivate 修飾子 × × × ×
ORDER 節 (OMP LOOP で有効) × × × ×
mutexinoutset および depobj dependence × × × ×
in、out、および inout dependence
AFFINITY 節 × × × ×
DETACH 節 × × × ×
USES_ALLOCATORS 節 × × × ×
DECLARE MAPPER および mapper-identifier × × × ×
DEVICE_TYPE 節 × × × ×
!$omp parallel master (結合ディレクティブ) × × ×
!$omp master taskloop (結合ディレクティブ) × × ×
!$omp master taskloop simd (結合ディレクティブ) × × ×
!$omp parallel master taskloop (結合ディレクティブ) × × ×
!$omp parallel master taskloop simd (結合ディレクティブ) × × ×
!$omp parallel masked (結合ディレクティブ) × × ×
!$omp masked taskloop (結合ディレクティブ) × × ×
!$omp masked taskloop simd (結合ディレクティブ) × × ×
!$omp parallel masked taskloop (結合ディレクティブ) × × ×
!$omp parallel masked taskloop simd (結合ディレクティブ) × × ×
!$omp taskwait の DEPEND 節 × × × ×
!$omp atomic の acq_rel、release、acquire、および relaxed memory-order × × × ×
!$omp atomic の seq_cst memory-order
!$omp atomic の HINT 節 × × × ×
!$omp flush の acq_rel、release、および acquire memory-order × × × ×
!$omp depobj × × × ×
if (cancel: スカラー論理式) × × × ×

〇* 限定的に実装。

関連情報

Fortran 標準

Fortran 標準規格の詳細は、wg5-fortran.org (英語) を参照してください。

OpenMP* 仕様

OpenMP* 仕様は openmp.org (英語) から入手できます。

インテルのドキュメント

インテル® Fortran コンパイラー・クラシックおよびインテル® Fortran コンパイラー・デベロッパー・ガイドおよびリファレンス (英語)


製品および性能に関する情報

1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。

タイトルとURLをコピーしました