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

同カテゴリーの次の記事

インテル® Fortran コンパイラーの OpenMP* サポートに関する日本語ドキュメントを公開

この記事は、インテル® デベロッパー・ゾーンに公開されている「Fortran Language and OpenMP* Features Implemented in Intel® Fortran Compiler (Beta)」の日本語参考訳です。


この記事の PDF 版はこちらからご利用になれます。

ベータ版インテル® Fortran コンパイラーは、インテル® Fortran コンパイラー・クラシック (ifort) のフロントエンドとランタイム・ライブラリーをベースとする新しいコンパイラーです。この新しいコンパイラーは、インテル® Fortran のフロントエンドと LLVM フレームワークを使用します。この新しいコンパイラーは ifx ドライバーを使用します。現時点で、ifx は Fortran 95 言語の機能と、ほとんどの OpenMP* 4.5 ディレクティブおよびオフロード機能をサポートしています。

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

Fortran 2003

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

○* は既知の問題があることを示す。

○** は派生型を値で C 構造体に渡すことを除く。

Fortran 2008

機能 2021.1 でのサポート
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 へのオプション引数の追加
プログラムとプロシージャー
モジュールとサブモジュール・データの属性の保存 ×
空の CONTAINS セクション
内部およびモジュール・プロシージャーの END 文の形式
実引数としての内部プロシージャー
POINTER または ALLOCATABLE 属性による汎用的な解決 ×
仮引数なしの null ポインターまたは割付けられていない割付け ×
PURE でない ELEMENTAL プロシージャー
ENTRY 文が非推奨に
ソース形式
行頭のセミコロン

OpenMP* 4.5

ユーザー定義のリダクションを除くすべての機能を 2021.1 で実装。

OpenMP* 5.0

機能 2021.1 でのサポート
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 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 (英語) から入手できます。
OpenMP* 5.0 API シンタックス・クイック・リファレンス・カードの日本語参考訳は、こちらから入手できます。

インテルのドキュメント

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


製品とパフォーマンス情報

1実際の性能は利用法、構成、その他の要因によって異なります。
詳細は、www.Intel.com/PerformanceIndex (英語) を参照してください。

関連記事

  • インテル® MKL 10.3 で追加された新機能インテル® MKL 10.3 で追加された新機能 この記事は、インテル® ソフトウェア・ネットワークに掲載されている「What's new in Intel® MKL?」の日本語参考訳 (一部編集含む) です。 インテル® MKL 10.3 では主に次の機能が追加されました。 インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) […]
  • OpenMP* 4.x による新しいレベルの並列化 (全2回)OpenMP* 4.x による新しいレベルの並列化 (全2回) 2015年 12月に東京で開催されたインテル® ソフトウェア・カンファレンス Day 1 で、iSUS 編集長 すがわら きよふみが講演した内容を基に、2部にわけて「OpenMP* 4.x による新しいレベルの並列化」についてお届けします。Part 1 では、複数レベルの並列性を活用するための Code […]
  • インテル Parallel Universe 30 号日本語版の公開インテル Parallel Universe 30 号日本語版の公開 インテル Parallel Universe マガジンの最新号が公開されました。 この号の注目記事、「インテル® Advisor のフローグラフ・アナライザーで自動運転コードのパフォーマンスを向上」では、インテル® Parallel Studio XE のプレビュー機能であるフローグラフ・アナライザー (FGA) […]
  • データとコードの並べ替え: 最適化とメモリー – パート 2データとコードの並べ替え: 最適化とメモリー – パート 2 この記事は、インテル® デベロッパー・ゾーンに公開されている「Putting Your Data and Code in Order: Data and layout - Part 2」の日本語参考訳です。 この記事の PDF 版はこちらからご利用になれます。 パフォーマンスとメモリーに関するこのシリーズ (全 2 […]
  • Fortran アプリケーションにおけるインテル® Inspector XE の使用 – パート 3 スタティック・セキュリティー解析Fortran アプリケーションにおけるインテル® Inspector XE の使用 – パート 3 スタティック・セキュリティー解析 この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Using Intel® Inspector XE on Fortran Applications – Static Security Analysis」の日本語参考訳です。 インテル® Inspector XE は、C/C++、C#、Fortran […]