大規模可視化対応PCクラスタ(VCC)では、intel C/C++コンパイラFortranコンパイラintelMPIコンパイラが利用可能です。バージョンは、intel C/C++コンパイラ、Fortranコンパイラが17.0.2、intelMPIコンパイラが4.1となります。旧バージョンの利用方法はこちらをご覧ください。

 

コンパイル コマンド

コンパイルを行う際のコマンドは、プログラミング言語ごとに異なります。

Fortran言語のコンパイルコマンドはifort、C言語のコンパイルコマンドはicc、C++言語のコンパイルコマンドはicpcとなります。
またintelMPIを利用する場合、先頭にmpiを付けたmpiifortmpiiccmpiicpcというコマンドとなります。

C言語 C++言語 Fortran言語
intelコンパイラ icc icpc ifort
intelMPIコンパイラ mpiicc mpiicpc mpiifort

以下は、使い方になります。
後述のオプションを利用する場合は、[options]という個所に指定してください。

 

 

並列化なし

並列化を行わないコンパイル方法です。

$ ifort [options] source_file
$ icc [options] source_file
$ icpc [options] source_file

 

自動並列化

コンパイラによって自動的に並列化を行う際のコンパイル方法です。
ノード内並列(共有メモリ並列処理)となります。

$ ifort -parallel [options] source_file
$ icc -parallel [options] source_file
$ icpc -parallel [options] source_file

 

OpenMP

プログラムにコンパイラに対する指示行を挿入し、並列化を行う際のコンパイル方法です。
ノード内並列(共有メモリ並列処理)となります。

$ ifort -openmp [options] source_file
$ icc -openmp [options] source_file
$ icpc -openmp [options] source_file

 

MPI

MPI実行する並列プログラムのコンパイル方法です。

$ mpiifort [options] source_file
$ mpiicc [options] source_file
$ mpiicpc [options] source_file

 

MPI+自動並列化

MPIによるノード間並列プログラムを、自動並列化によって、さらにノード内並列を行う際に使用するコンパイル方法です。
ノード間並列(分散メモリ並列処理)+ノード内並列(共有メモリ並列処理)となります。

$ mpiifort -parallel [options] source_file
$ mpiicc -parallel [options] source_file
$ mpiicpc -parallel [options] source_file

 

MPI+OpenMP

MPIによるノード間並列プログラムを、OpenMPによって、さらにノード内並列を行う際に使用するコンパイル方法です。
ノード間並列(分散メモリ並列処理)+ノード内並列(共有メモリ並列処理)となります。

$ mpiifort -openmp [options] source_file
$ mpiicc -openmp [options] source_file
$ mpiicpc -openmp [options] source_file

 

 

おすすめオプション(すべてFortran言語コンパイラを基準に書いています)

 

プログラムを初めて実行する方へ

$ ifort -O2 source_file
#(規定値レベルの最適化を行います)

 

正常終了するプログラムを高速化したい方へ

$ ifort -O3 -xHost -ftz source_file
#(プログラムが高速化されます。また演算結果が変わる可能性がありますので、-O2オプション指定時と結果が変わらないか確認してください。場合によっては遅くなることもあります。)

 

2017年4月に増設したノード(ジョブクラスV1C+/V1H+)を利用する方へ

2017年4月に増設したノードではIntel AVX2という拡張命令セットが利用可能です。増設ノード以外(ジョブクラスVCCやGVC)では実行エラーとなりますので、予めご注意ください。

$ ifort -xCORE-AVX2 source_file

 

デバッグしたい方へ

$ ifort -g -traceback source_file
#(デバッグ情報、トレースバック情報が出力されます)

$ ifort -check uninit -check bounds source_file
#(実行時に初期化漏れ、配列外参照のチェック、実行時間が遅くなります。)

 

 

オプション一覧

オプション デフォルト 概要
最適化
レベル
-o0 -02 全ての最適化を無効にします
-o1 -02のうちコードサイズを増大させる最適化は行わない。ベクトル化を行わない。
-o2 ベクトル化の有効化、組み込み関数のインライン展開。
不要な変数・関数などの削除。ループアンロールなどのコードの最適化。
-o3 プリフェッチ、ループ変換、パディング等を行う。
(-o2よりも実行速度が遅くなる場合がある。)
(コンパイル時間が長くなる場合がある。)
-fast なし 最大限に最適化します。
「-xHost -03 -ipo -no -prec -div -static」と同等です。
-xHost なし コンパイラが動作するCPUが使用可能な最上位の命令セットを生成します。
フロントエンドでは-xSSE4.2が有効になります。
浮動小数点関連 -[no-]ftz なし(-01以上では有効) アンダーフローした結果(デノーマル)を0として扱う
-[no-]prec-div -prec-div -noprec-divの指定で除算を乗算へ変更(精度が落ちる場合があります)
-[no-]prec-sqrt -prec-sqrt 高速で精度が少し低い平方根計算を使用
手続き間
最適化
-ip -02以上で-ip有効 手続き(サブルーチン、関数)間にまたがる最適化を実施
インライン展開も含む
-ipo -no-ipo 複数のファイルに跨がる手続き(サブルーチン、関数)間にまたがる最適化を実施
インライン展開も含む
プロファイル -prof-gen -no-prof-gen プロファイル用のオブジェクトファイルを生成します
-prof-use -no-prof-use 最適化にプロファイル情報を使用するようにします
並列化 -parallel 自動並列化を有効にし、マルチスレッドコードを生成します
-openmp OpenMPによる並列化を有効にし、マルチスレッドコードを生成します
コンパイラメッセージ -opt-report [n] n=2 nに数値を指定することで、コンパイラが出力する最適化レポートのレベルを指定します。n=0,1,2,3で数値が大きくなるほど出力される情報量が大きくなります。
-vec-report [n] n=1 ベクトル化時の診断メッセージレベルを指定します。n=0,1,2,3,4,5,6,7で指定し、3の情報量が最大となります。
-par-report [n] n=1 自動並列化時の診断メッセージレベルを指定します。n=0,1,2,3,4,5で数値が大きくなるほど出力される情報量が大きくなります。
-openmp-report [n] n=1 OpenMP並列化時の診断メッセージレベルを指定します。n=0,1,2で数値が大きくなるほど出力される情報量が大きくなります。

※ -opt-reportはnの指定にスペースが必要です

 

デバッグ、その他オプション

オプション デフォルト 概要
デバッグ -g デバッグ情報を生成します(最適化オプションを指定しないと-o0となります)
-traceback 実行時エラーの際、トレースバック情報を出力させます
-check uninit 初期化されていない変数の実行時チェックを有効にします
(実行速度は遅くなります)
-check bounds 配列添字と次元境界の実行時チェックを有効にします
(実行速度は遅くなります)
その他 -fpp Fortranプリプロセッサを実行します

上記に挙げたもの以外の詳細なオプションについては、コンパイラマニュアルを参照してください。閲覧するためには、当センターの利用者番号(アカウント)が必要です。

intel Fortranコンパイラマニュアル

intel C++コンパイラマニュアル
 

旧バージョンのコンパイラを利用する方法

バージョン14.0.2をご利用頂くことが可能です。
下記コマンドの実行後「ifort」「icc」「icpc」コマンドを実行してください。

source /opt/intel/composer_xe_2013_sp1.2.144/bin/ifortvars.csh intel64