コンパイル

コンパイラの種類と環境設定

環境設定

使用したいコンパイラの種類およびバージョンはmoduleコマンドで設定します。moduleコマンドについてはEnvironment Modulesをご参照ください。
以下にコンパイラごとに読み込むモジュールファイルを示します。

コンパイラバージョンmoduleファイル名備考
gcc4.4.7デフォルト(読み込みなし)
gcc3.4.6デフォルト(読み込みなし)
gcc4.8.5gcc/485ワーク、計算のみ
gcc5.3.0gcc/530ワーク、計算のみ
gcc6.3.0gcc/630ワーク、計算のみ
gcc8.2.0gcc/820ワーク、計算のみ
Intel Compiler(64bit)2019intel/2019ワーク、計算のみ
Intel Compiler(32bit)2019intel32/2019ワーク、計算のみ
Intel Compiler(64bit)2018intel/2018ワーク、計算のみ
Intel Compiler(32bit)2018intel32/2018ワーク、計算のみ
Intel Compiler(64bit)2017intel/2017ワーク、計算のみ
Intel Compiler(32bit)2017intel32/2017ワーク、計算のみ
PGI Compiler(64bit)16.3pgi/16.3
PGI Compiler(32bit)16.3pgi32/16.3

コマンドと起動例

以下に、ソースプログラムごとの代表的なコンパイラ起動コマンドを示します。
MPI 環境のコンパイルについては「MPI コンパイル」をご参照ください。 OpenMP を使用したコンパイルについては「OpenMP コンパイル」をご参照ください。

コンパイラタイププログラム種類コンパイラ起動コマンドデバッガ ※1
実行例
gcc version 8.2.0※2
gcc version 6.3.0※2
gcc version 5.3.0※2
gcc version 4.8.5※2
gcc version 4.4.7
gcc version 3.4.6
C 64bitgcc ・・・・version 3.4.6以外
gcc34 ・・・・version 3.4.6
gdb
gcc -o hello hello.c
C 32bitgcc ・・・・version 3.4.6以外
gcc34 ・・・・version 3.4.6
gcc -m32 -o hello hello.c
C++ 64bitg++ ・・・・version 3.4.6以外
g++34 ・・・・version 3.4.6
g++ -o hello hello.cpp
C++ 32bitg++ ・・・・version 3.4.6以外
g++34 ・・・・version 3.4.6
g++ -m32 -o hello hello.cpp
Fortran 64bitg77・・・・version 3.4.6
g77 -o hello hello.f
Fortran 32bitg77 ・・・・version 3.4.6
g77 -m32 -o hello hello.f
Fortran90 64bitgfortran ・・・・version 3.4.6以外
gfortran -o hello hello.f90
Fortran90 32bitgfortran ・・・・version 3.4.6以外
gfortran -m32 -o hello hello.f90
PGI 16.1
PGI 12.1※3
マニュアルはこちら
C 64bit/32bitpgccpgdbg
pgcc -o hello hello.c
C++ 64bit/32bitpgCC
pgCC -o hello hello.cpp
Fortran 64bit/32bitpgf77
pgf77 -o hello hello.f
Fortran90 64bit/32bitpgf90
pgf90 -o hello hello.f90
Intel Parallel Studio XE 2019 Cluster Edition
Intel Parallel Studio XE 2018 Cluster Edition
Intel Parallel Studio XE 2017 Cluster Edition
マニュアルはこちら
C 64bit/32biticcidb
icc -o hello hello.c
C++ 64bit/32biticpc
icpc -o hello hello.cpp
Fortran 64bit/32bit
Fortran90 64bit/32bit
ifort
ifort -o hello hello.f

※1 デバッガとしてAllinea社Forgeも利用できます。Forgeについてはこちらをご参照ください。 
※2 ワークサーバ、計算サーバのみ。 
※3 並列サーバのみ。

ライブラリ

MKLライブラリ 

ワークサーバ、計算サーバ、並列サーバで、MKL(Intel Math Kernel Library)ライブラリを利用することができます.
詳しくは、以下のリンク内のマニュアルを参照してください。
マニュアルはこちら

環境設定

moduleコマンドで環境設定が必要です。

○Intelコンパイラ環境を使用する場合 

 $> module load intel/2019   (64bit)
 $> module load intel32/2019 (32bit)

○gnuおよびPGIコンパイラからMKLライブラリを使用する場合

 $> module load mkl/2019   (64bit)
 $> module load mkl32/2019 (32bit)

使用例 

MKLをリンクする際のコンパイラオプションについてはIntel Math Kernel Library Link Line Advisorをご参照ください。

○Intelコンパイラ [C]/[C++]/[Fortran]

 $> module load intel/2019
 $> icc|icpc|ifort -o example example.[c|f] -lmkl_intel_lp64  
-lmkl_core -lmkl_sequential -lpthread -lm -ldl4 ↓

○gnuコンパイラ [C]/[C++]/[Fortran]

 $> module load mkl/2019
 $> gcc|g++|gfortran -o example example.[c|f] -Wl,--no-as-needed -lmkl_intel_lp64 -lmkl_core  -lmkl_sequential -lm -lpthread -ldl ↓ 

○PGIコンパイラ [C]/[C++]/[Fortran]

 $> module load mkl/2019
 $> module load pgi/16.3
 $> pgcc|pgCC|pgf90 -o example example.[c|f] -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -ldl ↓ 

ACMLライブラリ

ワークサーバ、計算サーバ、並列サーバのACMLライブラリは、コンパイラ毎に次のディレクトリにインストールされています。

ディレクトリ用途 
/opt/acml-5.3.1/ifort64/lib/ Intel用 fortran 64bit 用
/opt/acml-5.3.1/ifort64_mp/lib/ Intel用 fortran 64bit マルチプロセッサ用
/opt/acml-5.3.1/pgi64/lib/ PGI用 fortran 64bit 用
/opt/acml-5.3.1/pgi64_mp/lib/ PGI用 fortran 64bit マルチプロセッサ用
/opt/acml-6.1.0/gfortran64/lib/ gnu用 fortran 64bit 用
/opt/acml-6.1.0/gfortran64_mp/lib/ gnu用 fortran 64bit マルチプロセッサ用

コンパイルオプション

コンパイルの際、、ファイル名(***.f や ***.c など)の後ろに、-L/opt/acml-6.1.0/gfortran64/lib/ -lacml のようにコンパイルオプションを指定してください。

fftw3ライブラリ

fftw3ライブラリは、次のディレクトリにインストールされています。

ディレクトリ種類 バージョン備考
/usr/lib64fftw3 without MPI3.2システムデフォルト
/sw/packages/fftw3 ※4fftw3 with MPI3.3Intelコンパイラでbuild
/opt/intel/mkl/ fftw3MKL版

※4 ワークサーバ、計算サーバのみ。 

使用例

○fftw3 with MPI
fftw3ライブラリはIntelコンパイラでbuildされているため、インテルコンパイラの環境設定が必要です。
使用するコンパイラがIntel以外の場合でもIntelコンパイラ環境をロードする必要があります。

 $> module load intel/2019

コンパイルの際、、ファイル名(***.f や ***.c など)の後ろに、-L/sw/packages/fftw/fftw3/lib/ -lfftw3 のようにコンパイルオプションを指定してください。

○MKL版fftw3
MKLを利用する場合と同じ方法で利用できます。

MPI コンパイル

実行環境

MPI コンパイルは、ワークサーバ、計算サーバ、並列サーバで実行できます。
MPI環境として、IntelMPIおよびOpenMPIが利用可能です。

環境設定

MPIコンパイルを行う前にmoduleコマンドで環境変数設定を行う必要があります。
OpenMPIは、コンパイラ毎に用意されていますので、使用するコンパイラによって選択してください。

設定可能なmoduleファイルは以下の通りです。

MPImoduleファイル名
Intel MPIintel/2017 intel/2018 intel/2019
gcc(4.4.7)版OpenMPI(1.10.2)openmpi/1.10.2-gcc
gcc(4.8.5)版OpenMPI(1.10.2)※5openmpi/1.10.2-gcc485
gcc(5.3.0)版OpenMPI(1.10.2)※5openmpi/1.10.2-gcc530
gcc(6.3.0)版OpenMPI(1.10.2)※5openmpi/1.10.2-gcc630
gcc(8.2.0)版OpenMPI(1.10.2)※5openmpi/1.10.2-gcc820
Intelコンパイラ版OpenMPI(1.10.2)openmpi/1.10.2-intel
PGIコンパイラ版OpenMPI(1.10.2)openmpi/1.10.2-pgi

※5 ワークサーバ、計算サーバのみ。 

コンパイル実行例

IntelMPI

以下に、IntelMPIコンパイラ実行例を示します。

 $> module load intel/2019
 $> mpiicc -o intelmpi_64 intelmpi_64.c

OpenMPI

以下に、OpenMPIコンパイラ実行例を示します。

 $> module load openmpi/1.10.2-gcc
 $> mpicc -o openmpi_64 openmpi_64.c

ScaLAPACK

MPI環境で ScaLAPACK が利用可能です。 以下に、ScaLAPACK(/BLACS) をリンクする実行例を示します。

IntelMPI

[C]/[Fortran]

 $> module load intel/2019
 $> mpiicc|mpiifort -o intelmpi_sltest intelmpi_sltest.[c|f] -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 
-lmkl_core -lmkl_sequential -lpthread -lm -ldl ↓

OpenMPI with gnu

その他のコンパイラとのオプションについてはこちらをご参照ください。

[C]/[Fortran]

 $> module load mkl/2019
 $> module load openmpi/1.10.2-gcc
 $> mpicc|mpif90 -o openmpi_sltest openmpi_sltest.[c|f] -Wl,--no-as-needed  -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 
-lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lm -lpthread -ldl ↓

OpenMP プログラムのコンパイル

実行環境

OpenMP を使用したプログラムのコンパイルは、ワークサーバ、並列サーバで実行できます。

環境設定

コンパイルを行う前にmoduleコマンドで環境変数設定を行う必要があります。

コンパイル実行例

gcc

以下に、gcc での実行例を示します。

 $> gcc -fopenmp -o openmp_64.gcc openmp_64.c

Intel コンパイラ

以下に、Intel コンパイラでの実行例を示します。

 $> module load intel/2019
 $> icc -qopenmp -o openmp_64.icc openmp_64.c

PGI コンパイラ

以下に、PGI コンパイラでの実行例を示します。

 $> module load pgi/16.3
 $> pgcc -mp -o openmp_64.pgi openmp_64.c

利用上の注意

ライセンス数

PGI及び、Intelコンパイラは、FlexLMを用いたライセンスサーバを使用し、ライセンスを共有しています。 PGI及び、Intelコンパイラともに5ユーザライセンスとなっています。 この制限を超えると、コンパイルの実行を待たされます。


Last-modified: 2019-01-29 (火) 17:16:15 (49d)