コンパイル

コンパイル

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

環境設定

使用したいコンパイラの種類およびバージョンは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 のようにコンパイルオプションを指定してください。


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ユーザライセンスとなっています。 この制限を超えると、コンパイルの実行を待たされます。


  1. デバッガとしてAllinea社Forgeも利用できます。Forgeについてはこちらを参照してください。 

  2. ワークサーバ、計算サーバのみ。 

  3. 並列サーバのみ。 

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

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