Intel コンパイラ

バージョン モジュールファイル名 システムA システムB/C システムG クラウドシステム 備考
2025.3 intel/2025.3 + + + + 2026年4月導入. Intelコンパイラ + MKL + TBB
2025.0 intel/2025.0 + + + + 2025年4月導入. Intelコンパイラ + MKL + TBB
2023.4 intel/2024.0 + + + + 2024年4月導入. Intelコンパイラ + MKL + TBB
2023.2 (default) intel/2023.2 + + + + 2024年4月導入. Intelコンパイラ + MKL + TBB
2023.2-rt intel/2023.1-rt + + + + 2024年4月導入. ランタイムライブラリ
2023.1 intel/2023.1 + + + + 2023年8月導入. Intelコンパイラ + MKL + TBB
2023.1-rt intel/2023.1-rt + + + + 2023年8月導入. ランタイムライブラリ
2022.3 intel/2022.3 + + + + 2022年11月導入. Intelコンパイラ + MKL + TBB
2022.3-rt intel/2022.3-rt + + + + 2022年11月導入. ランタイムライブラリ

注:Intelコンパイラの個別のバージョンではなく、Intel OneAPI の包括的なバージョンで記載しています。

+ : すべてのユーザが利用可能
- : 利用不可

システムA、B、C、クラウドでは、システムにログインした時点で、Intelコンパイラがデフォルトで設定されています。システムG は、動作検証をしていません。

$ module list
Currently Loaded Modulefiles:
x) slurm x) SysB/2022 x) intel/2023.2(default) x) intelmpi/2023.2(default) x) PrgEnvIntel/2023(default)  

コンパイラのバージョンは、上表に記載のデフォルトのバージョンが設定されています。 Intelコンパイラのバージョンを切り替えたい場合は、PrgEnvIntel ごと切り替える必要があります。 以下のようにmoduleコマンドを実行してください。

$ module switch PrgEnvIntel/2023 PrgEnvIntel/2025

ログイン時に自動で環境設定を行いたい場合は、ログインシェルの起動ファイルに必要なmoduleコマンドを記述してください。詳細は 環境設定 をご覧ください。 moduleコマンドの詳細は Modules をご覧ください。

言語 コマンド 実行形式
C icx icx [オプション] ファイル名
C++ icpx icpx [オプション] ファイル名
Fortran ifx ifx [オプション] ファイル名

オプション名 説明
-o FILENAME オブジェクトファイルの名前を指定します。
-mcmodel=medium 2Gbyteを超えてメモリを利用できるようになります。
※SYCLでは使用できません。
-fpic 位置に依存しないコードを生成します。
-fiopenmp
(-qopenmp)
OpenMP指示子を有効にしてコンパイルします。
-qmkl MKLライブラリをリンクします。
-O0/-O1/-O2/-O3 最適化のレベルを指定します(デフォルトは-O2)。
-fast プログラムの実行速度が最大になるように最適化します。
-fast オプションにより、次のオプションが付与されます。
-ipo, -O3, -static, -fp-model fast=2
-flto
(-ipo)
複数ファイル間で、手続き間の処理を最適化します。
-qopt-report 最適化レポートを作成します。
-qopt-report-phase 最適化レポートで出力する項目を指定します。
-xHost コンパイルするホスト上のプロセッサで利用可能なコードを生成します。
-xCORE-AVX512
-xSAPPHIRERAPIDS
Intelプロセッサ向けに、指定した命令セットに対応した最適化コードを生成します。
-fsycl SYCLプログラムとしてコンパイルします。
-shared-intel インテルが提供するライブラリをすべて動的にリンクします。
-static-intel インテルが提供するライブラリを静的にリンクします。
静的にリンクすることで、プログラム起動時の動的ライブラリ探索の負荷を下げる効果があります。

$ icx test.c      # C言語の例
$ icpx test.cpp   # C++の例
$ ifx test.f90   # Fortranの例
$ tssrun ./a.out  # 実行

OpenMPは、プログラムの並列化のためのオープン規格です。 ソースコードに#pragma ompで始まる指示を書き込み、所定のオプションをつけてコンパイルすると、コンパイラに並列化を行わせることができます。

OpenMPへの指示を書き込んだソースコードをコンパイルするには、-fiopenmpオプションをつけます。

$ icx -fiopenmp test.c

コンパイルしたプログラムを実行する際、--rscオプションでtとcに並列数を指定すると、その並列数でプログラムが実行されます。

$ tssrun --rsc p=1:t=8:c=8 ./a.out # 並列数8を指定して実行

Intel コンパイラは、プログラムの誤りや通知すべき情報があるときに、以下に示す形式でメッセージを出力します。

  • Intel oneAPI DPC++/C++コンパイラ
    ファイル名:行番号 : XXX : YYY : メッセージ本文
    ソースコードの該当行の内容
    ^
  • Fortranコンパイラ

    ファイル名(行番号): XXX #YYY: メッセージ本文
    ソースコードの該当行の内容
    --------------^
    • XXX : メッセージ種別(error/warning)
    • YYY : メッセージの通し番号
    • ポインタ(^) : ソースコードの該当行でエラーが発見された正確な場所

出力例

  • Intel oneAPI DPC++/C++コンパイラ
    main.c:8:3: error: use of undeclared identifier 'nt'
    nt nthreads;
    ^
  • Fortranコンパイラ
    sample.f90(26): error #5560: Subscript #2 of the array C has value 20 which is greater than the upper bound of 2
    print *, c(1,1),",", c(1,20)
    -----------------------^
    compilation aborted for sample.f90 (code 1)

Intel MPIライブラリが利用できます。MPIプログラムのコンパイル、リンク、実行方法については、Intel MPIライブラリ をご覧ください。

Intelコンパイラを利用する場合、以下の数値計算ライブラリを利用できます。各ライブラリの利用方法については、個別のページをご覧ください。

ライブラリ システムA システムB/C システムG クラウド
MKLライブラリ + + - +

+ : すべてのユーザが利用可能
AU : 学術研究機関限定で利用可能
- : 利用不可

  • icc と異なり、icx ではC++のプログラムをコンパイルすることはできません。C++のプログラムをコンパイルする際は、 icpx を使用してください。
  • 自動並列化を行うオプション(-parallel)は廃止されました。OpenMP* を使用して並列処理を実装してください。