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

同カテゴリーの次の記事

インテル® Advisor ユーザー向けベクトル化リソース

この記事は、インテル® デベロッパー・ゾーンに公開されている「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 仕様のサポート」をご覧ください。

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

関連記事