コンパイル
コンパイル
コンパイラの種類と環境設定
環境設定
使用したいコンパイラの種類およびバージョンはmoduleコマンドで設定します。
以下にコンパイラごとに読み込むモジュールファイルを示します。
コンパイラ | バージョン | moduleファイル名 | 備考 |
---|---|---|---|
gcc | 4.8.5 | デフォルト(読み込みなし) | |
gcc | 7.5.0 | gcc/750 | ワーク、計算のみ |
gcc | 8.3.0 | gcc/830 | ワーク、計算のみ |
gcc | 9.3.0 | gcc/930 | ワーク、計算のみ |
Intel Compiler(64bit) | 2020 | intel/2020 | ワーク、計算のみ |
Intel Compiler(32bit) | 2020 | intel32/2020 | ワーク、計算のみ |
PGI Compiler(64bit) | 20.1 | pgi/20.1 | pgi/2020 |
コマンドと起動例
以下に、ソースプログラムごとの代表的なコンパイラ起動コマンドを示します。
コンパイラタイプ | プログラム種類 | コンパイラ起動コマンド 実行例 |
デバッガ1 |
---|---|---|---|
gcc version 9.3.02 gcc version 8.3.02 gcc version 7.5.02 gcc version 4.8.52 |
C 64bit | gcc | gdb |
gcc -o hello hello.c | |||
C 32bit | gcc | ||
gcc -m32 -o hello hello.c | |||
C++ 64bit | g++ | ||
g++ -o hello hello.cpp | |||
C++ 32bit | g++ | ||
g++ -m32 -o hello hello.cpp | |||
Fortran 64bit | gfortran | ||
gfortran -o hello hello.f | |||
Fortran 32bit | gfortran | ||
gfortran -m32 -o hello hello.f | |||
Fortran90 64bit | gfortran・・・・version3.4.6以外 | ||
gfortran -o hello hello.f90 | |||
Fortran90 32bit | gfortran・・・・version3.4.6以外 | ||
gfortran -m32 -o hello hello.f90 | |||
PGI20.1 PGI20.13 マニュアルはこちら |
C64bit/32bit | pgcc | pgdbg |
pgcc -o hello hello.c | |||
C++ 64bit/32bit | pgCC | ||
pgCC -o hello hello.cpp | |||
Fortran 64bit/32bit | pgf77 | ||
pgf77 -o hello hello.f | |||
Fortran90 64bit/32bit | pgf90 | ||
pgf90 -o hello hello.f90 | |||
Intel Parallel Studio XE 2020 Cluster Edition マニュアルはこちら |
C 64bit/32bit | icc | idb |
icc -o hello hello.c | |||
C++ 64bit/32bit | icpc | ||
icpc -o hello hello.cpp | |||
Fortran 64bit/32bit Fortran90 64bit/32bit |
ifort | ||
ifort -o hello hello.f |
MPI 環境のコンパイルについては「MPI コンパイル」、OpenMP を使用したコンパイルについては「OpenMP コンパイル」を参照してください。
ライブラリ
MKLライブラリ
ワークサーバ、計算サーバ、並列サーバで、MKL(Intel Math Kernel Library)ライブラリを利用することができます。 詳しくは、マニュアルを参照してください。
環境設定
moduleコマンドで環境設定が必要です。
- Intelコンパイラ環境を使用する場合
$> module load intel/2020 ↓ (64bit) $> module load intel32/2020 ↓ (32bit)
使用例
MKLをリンクする際のコンパイラオプションについてはIntel Math Kernel Library Link Line Advisorを参照してください。
- Intelコンパイラ [C]/[C++]/[Fortran]
$> module load intel/2020 ↓ $> icc|icpc|ifort -o example example.[c|f] -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -ldl4 ↓
AOCLライブラリ
ワークサーバ、計算サーバ、並列サーバのAOCLライブラリは、コンパイラ毎に次のディレクトリにインストールされています。 各ライブラリのディレクトリにリリースのノート等ありますので、参照してください。
ディレクトリ | 用途 |
---|---|
/opt/aocl-2.1/amd/aocl/2.1/amd-blis/ | blasライブラリ |
/opt/aocl-2.1/amd/aocl/2.1/amd-fftw/ | fftwライブラリ |
/opt/aocl-2.1/amd/aocl/2.1/amd-libflame/ | libFLAME library for AMD |
/opt/aocl-2.1/amd/aocl/2.1/amd-libm/lib | math library |
/opt/aocl-2.1/amd/aocl/2.1/amd-rng/lib | AMD_Random_Number_Generator_Library |
/opt/aocl-2.1/amd/aocl/2.1/amd-scalapack | high performance linear algebra routines for distributed memory computers supporting MPI |
/opt/aocl-2.1/amd/aocl/2.1/amd-securerng | AMD_SecureRNG_Library |
/opt/aocl-2.1/amd/aocl/2.1/libs | すべてのライブラリのリンクがここにあります |
コンパイルオプション
AMD Optimizing CPU Libraries User Guideを参照してください。
fftw3ライブラリ
fftw3ライブラリは、次のディレクトリにインストールされています。
ディレクトリ | 種類 | バージョン | 備考 |
---|---|---|---|
/usr/lib64 | fftw3 without MPI | 3.2 | システムデフォルト |
/sw/packages/fftw/fftw3 4 | fftw3 with MPI | 3.3 | Intelコンパイラでbuild |
/opt/intel/mkl/ | fftw3 | MKL版 |
使用例
- fftw3 with MPI
fftw3ライブラリはIntelコンパイラでbuildされているため、インテルコンパイラの環境設定が必要です。使用するコンパイラがIntel以外の場合でもIntelコンパイラ環境をロードする必要があります。
$> module load intel/2020 ↓
コンパイルの際、ファイル名(***.f や ***.c など)の後ろに、-L/sw/packages/fftw/fftw3/lib/ -lfftw3 のようにコンパイルオプションを指定してください。
- MKL版fftw3
MKLを利用する場合と同じ方法で利用できます。
MPI コンパイル
実行環境
MPI コンパイルは、ワークサーバ、計算サーバ、並列サーバで実行できます。
MPI環境として、IntelMPIおよびOpenMPIが利用可能です。
環境設定
MPIコンパイルを行う前にmoduleコマンドで環境変数設定を行う必要があります。 OpenMPIは、コンパイラ毎に用意されていますので、使用するコンパイラによって選択してください。
設定可能なmoduleファイルを以下に示します。
MPI | moduleファイル名 |
---|---|
Intel MPI | intel/2020 |
gcc(4.8.5)版OpenMPI(1.10.7) | openmpi/1.10.7-gcc |
gcc(7.5.0)版OpenMPI(1.10.7)5 | openmpi/1.10.7-gcc750 |
gcc(8.3.0)版OpenMPI(1.10.7)5 | openmpi/1.10.7-gcc830 |
gcc(9.3.0)版OpenMPI(1.10.7)5 | openmpi/1.10.7-gcc930 |
gcc(4.8.5)版OpenMPI(2.1.6)5 | openmpi/2.1.6-gcc |
gcc(7.5.0)版OpenMPI(2.1.6)5 | openmpi/2.1.6-gcc750 |
gcc(8.3.0)版OpenMPI(2.1.6)5 | openmpi/2.1.6-gcc830 |
gcc(9.3.0)版OpenMPI(2.1.6)5 | openmpi/2.1.6-gcc930 |
Intelコンパイラ版OpenMPI(1.10.7) | openmpi/1.10.7-intel |
Intelコンパイラ版OpenMPI(2.1.6) | openmpi/2.1.6-intel |
PGIコンパイラ版OpenMPI(1.10.7) | openmpi/1.10.7-pgi |
PGIコンパイラ版OpenMPI(2.1.6) | openmpi/2.1.6-pgi |
コンパイル実行例
IntelMPI
$> module load intel/2020 ↓ $> mpiicc -o intelmpi_64 intelmpi_64.c↓
OpenMPI
$> module load openmpi/1.10.7-gcc ↓ $> mpicc -o openmpi_64 openmpi_64.c↓
ScaLAPACK
MPI環境で ScaLAPACK が利用可能です。 以下に、ScaLAPACK(/BLACS) をリンクする実行例を示します。
IntelMPI
[C]/[Fortran]
$> module load intel/2020 ↓ $> 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/2020 ↓ $> module load openmpi/1.10.7-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 -fopenmp -o openmp_64.gcc openmp_64.c↓
Intel コンパイラ
$> module load intel/2020 ↓ $> icc -qopenmp -o openmp_64.icc openmp_64.c↓
PGI コンパイラ
$> module load pgi/20.1 ↓ $> pgcc -mp -o openmp_64.pgi openmp_64.c↓
利用上の注意
ライセンス数
PGI及び、Intelコンパイラは、FlexLMを用いたライセンスサーバを使用し、ライセンスを共有しています。 PGI及び、Intelコンパイラともに5ユーザライセンスとなっています。 この制限を超えると、コンパイルの実行を待たされます。