インテル® Fortran コンパイラー – Fortran 言語標準のサポート

同カテゴリーの次の記事

ベクトル異形関数でのプロセッサー ID 指定

この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® Fortran Compiler – Support for Fortran language standards」の日本語参考訳です。


インテル® [Visual] Fortran コンパイラー 16.0 は、ISO/IEC 1539-1:2004 Fortran 言語標準 (Fortran 2003 言語) に完全に準拠しています。また、インテル® [Visual] Fortran は、これまでの標準規格 Fortran 95、Fortran 90、FORTRAN 77 および FORTRAN IV (FORTRAN 66) も完全にサポートします。以前の Fortran 規格の異なった振る舞いのサポート有効にするには、コンパイラー・オプションの指定が必要になることがあります。

インテル® [Visual] Fortran 16.0 は、最新の Fortran 規格の多くをサポートしています: Fortran 2008 (ISO/IEC 1539-1:2010) 現在サポートしていない Fortran 2008 機能についても、今後サポートしていく予定です。また、バージョン 16.0 では、ISO/IEC TS 29113:2012 を完全にサポートします。さらに、現在の Fortran 2015 ドラフトの一部である、C との相互運用性をサポートします。

サポートされる Fortran 2008 の機能:

  • 配列の最大次元数が 31 次元に (Fortran 2008 では 15 次元)
  • Co-Array (Linux* と Windows* のみ)
    • CODIMENSION 属性
    • SYNC ALL 文
    • SYNC IMAGES 文
    • SYNC MEMORY 文
    • CRITICAL および END CRITICAL 文
    • LOCK および UNLOCK 文
    • ERROR STOP 文
    • ALLOCATE および DEALLOCATE で Co-Array を指定
    • 組込みプロシージャー: ATOMIC_DEFINE、ATOMIC_REF、IMAGE_INDEX、LCOBOUND、NUM_IMAGES、THIS_IMAGE、UCOBOUND
  • CONTIGUOUS 属性
  • ALLOCATE の MOLD キーワード
  • BLOCK 構文 (BLOCK 構文外で宣言される変数への ASYNCHRONOUS や VOLATILE 属性の追加はサポートされていません)
  • EXIT 文で BLOCK 構文を終了できます (16.0 – ほかの名前付き構文中の EXIT はまだサポートされていません)
  • DO CONCURRENT
  • OPEN の NEWUNIT キーワード
  • G0 および G0.d フォーマット編集記述子
  • サブモジュール (16.0)
  • ELEMENTAL プロシージャーの IMPURE プリフィックス (16.0)
  • 実引数として内部プロシージャーを渡します
  • プロシージャー・ポインターは、内部プロシージャーを指すことができます
  • ALLOCATE で、ソース・オブジェクトが指定された形状を持っていない場合、形状は “SOURCE=引数” から引き継がれます
  • CONTAINS セクションは空にすることも可能
  • 組込みプロシージャー: BESSEL_J0、BESSEL_J1、BESSEL_JN、BESSEL_YN、BGE、BGT、BLE, BLT、DSHIFTL、DSHIFTR、ERF、ERFC、ERFC_SCALED、EXECUTE_COMMAND、GAMMA、HYPOT、IALL、IANY、IPARITY、IS_CONTIGUOUS、LEADZ、LOG_GAMMA、MASKL、MASKR、MERGE_BITS、NORM2、PARITY、POPCNT、POPPAR、SHIFTA、SHIFTL、SHIFTR、STORAGE_SIZE、TRAILZ
  • 組込みモジュール ISO_FORTRAN_ENV の追加:ATOMIC_INT_KIND、ATOMIC_LOGICAL_KIND、CHARACTER_KINDS、INTEGER_KINDS、INT8、INT16、INT32、INT64、LOCK_TYPE、LOGICAL_KINDS、REAL_KINDS、REAL32、REAL64、REAL128、STAT_LOCKED、STAT_LOCKED_OTHER_IMAGE、STAT_UNLOCKED
  • ALLOCATABLE または POINTER 属性を持たない OPTIONAL 仮引数は、対応する実引数に ALLOCATABLE 属性があるのに割り当てられない場合、POINTER 属性があるのに関連付けが解除されている場合、または NULL 組込み関数への参照の場合、無視されます。
  • 仮引数がプロシージャー・ポインターの場合、そのポインターの有効な参照先か、または組込み関数 NULL への参照である実引数に関連付けられます。実引数がポインターではない場合、仮引数に INTENT (IN) 属性が含まれていなければなりません。

サポートされる Fortran 2015 ドラフトの機能:

  • ISO/IEC TS29113:2012 で定義されるすべての機能と C との相互運用性 (16.0)
    • 想定型 (TYPE(*))
    • 想定ランク (DIMENSION(..))
    • ISO_Fortran_binding.h
    • C ディスクリプターとそれを操作するプロシージャー
    • RANK 組込み関数
    • 相互運用可能な仮引数における制限の緩和
    • 組み込みモジュール ISO_C_BINDING におけるプロシージャー上の制限の緩和

インテル® Fortran コンパイラーは、デフォルトのコンパイラーの振る舞いを変更するコマンドライン・オプションだけではなく、いくつかの Fortran 規格の拡張も含んでいます。

いくつかのケースでは、インテル® Fortran コンパイラーのデフォルト動作では、Fortran 2003 のセマンティクスに準拠していません。次の表は、デフォルトで有効になっていない完全な Fortran 2003 セマンティクスを有効にするコンパイラー・オプションの一覧です。これらのオプションを指定することで、実行時のパフォーマンスが低下することがあることに留意してください。

単一のオプション /標準セマンティクス (Windows*) または -標準セマンティクス (Linux* と OS X*) は、完全な Fortran 2003 セマンティクスを有効にするために指定します。IEEE_ARITHMETIC、IEEE_EXCEPTIONS または IEEE_FEATURES 組込みモジュールを使用する場合、/fp:strict (Windows*) や -fp-model strict (Linux* と OS X*) を指定する必要があります。

Fortran 2003 セマンティクス向けの非デフォルト・コンパイラー・オプション
Windows* Linux* および OS X*
/assume:byterecl -assume byterecl
/assume:fpe_summary -assume fpe_summary
/assume:ieee_fp_flags (/fp:strict または precise と一緒に指定する場合) -assume ieee_fp_flags (-fp-model strict または precise と一緒に指定する場合)
/assume:minus0 -assume minus0
/assume:noold_ldout_format -assume noold_ldout_format
/assume:noold_maxminloc -assume noold_maxminloc
/assume:noold_unit_star -assume noold_unit_star
/assume:noold_xor -assume noold_xor
/assume:protect_parens -assume protect_parens
/assume:realloc_lhs -assume realloc_lhs
/assume:std_mod_proc_name -assume std_mod_proc_name
/fpscomp:logicals -fpscomp logicals

詳細については、インテル® Fortran コンパイラーのドキュメントの「コンパイラー・オプション」を参照してください。

以前のバージョンの言語規格については、「Fortran 2003 仕様のサポート」「Fortran 2008 仕様のサポート」をご覧ください。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事

  • プロセスピニングを使用する分散メモリー Co-Array プログラムプロセスピニングを使用する分散メモリー Co-Array プログラム この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Distributed memory coarray programs with process pinning」の日本語参考訳です。 はじめに : この記事は、インテル® Fortran コンパイラー XE 12.0 を使用して、分散メモリー […]
  • ベクトル異形関数でのプロセッサー ID 指定ベクトル異形関数でのプロセッサー ID 指定 インテル® C/C++ および Fortran コンパイラーのバージョン 16.0 以降では、プログラマーがスカラー関数に対応するベクトル関数を明示的に記述することを可能にする、ベクトル異形関数 (Vector Variant Function) をサポートしています。 Windows* および Linux* […]
  • Fortran 2008 仕様のサポートFortran 2008 仕様のサポート インテル® Parallel Studio XE 2015 Composer Edition に含まれる、インテル® Fortran コンパイラーでサポートされる Fortran 2008 の機能を以下にまとめます。 言語機能 V14.0 V15.0 EXECUTE_COMMAND_LINE […]
  • インテル® Fortran Studio XE によるマンデルブロー描画プログラムの高速化インテル® Fortran Studio XE によるマンデルブロー描画プログラムの高速化 1. はじめに インテル® Fortran Studio XE 2011 (Windows* 版および Linux* 版) は、ソフトウェア開発用言語として Fortran を採用している開発者を対象とするソフトウェア開発スイートです。インテル® (Visual) Fortran Composer XE 2011 […]
  • OpenMP* のサポート・ライブラリーOpenMP* のサポート・ライブラリー この記事は、インテル® ソフトウェア・ネットワークに掲載されている「OpenMP* Support Libraries」の日本語参考訳です。 編集部注: 本記事には旧製品(インテル® コンパイラー・バージョン 11.1 以前)向けの情報が含まれます。バージョン 12.0 […]