コンパイル
コンパイル
コンパイラの種類と環境設定
環境設定
使用したいコンパイラの種類およびバージョンはmoduleコマンドで設定します。
以下にコンパイラごとに読み込むモジュールファイルを示します。
コンパイラ | バージョン | moduleファイル名 | 備考 |
---|---|---|---|
gcc | 11.4.1 | デフォルト(読み込みなし) | |
gcc | 8.5.0 | gcc/850 | ワーク、計算のみ |
gcc | 12.3.0 | gcc/1230 | ワーク、計算のみ |
Intel Compiler(64bit) | 2024 | intel/2024 | ワーク、計算のみ |
PGI(nvhpc) Compiler(64bit) | 24.1 | nvhpc/24.1 | ワーク、計算のみ |
コマンドと起動例
以下に、ソースプログラムごとの代表的なコンパイラ起動コマンドを示します。
コンパイラタイプ | プログラム種類 | コンパイラ起動コマンド 実行例 |
デバッガ |
---|---|---|---|
gcc version 11.4.1 gcc version 8.5.0 gcc version 12.3.0 |
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・・・・version8.5.0以外 | ||
gfortran -o hello hello.f | |||
Fortran 32bit | gfortran・・・・version8.5.0以外 | ||
gfortran -m32 -o hello hello.f | |||
Fortran90 64bit | gfortran・・・・version8.5.0以外 | ||
gfortran -o hello hello.f90 | |||
Fortran90 32bit | gfortran・・・・version8.5.0以外 | ||
gfortran -m32 -o hello hello.f90 | |||
PGI(nvhpc)24.1 マニュアルはこちら |
C64bit/32bit | pgcc | cuda-gdb |
pgcc -o hello hello.c | |||
C++ 64bit/32bit | pgc++ | ||
pgc++ -o hello hello.cpp | |||
Fortran 64bit/32bit | pgf77 | ||
pgf77 -o hello hello.f | |||
Fortran90 64bit/32bit | pgf90 | ||
pgf90 -o hello hello.f90 | |||
Intel oneAP マニュアルはこちら |
C 64bit/32bit | icx | gdb-oneapi |
icx -o hello hello.c | |||
C++ 64bit/32bit | icpx | ||
icpx -o hello hello.cpp | |||
Fortran 64bit/32bit Fortran90 64bit/32bit |
ifx | ||
ifx -o hello hello.f |
MPI 環境のコンパイルについては「MPI コンパイル」、OpenMP を使用したコンパイルについては「OpenMP コンパイル」を参照してください。
ライブラリ
MKLライブラリ
ワークサーバ、計算サーバで、MKL(Intel Math Kernel Library)ライブラリを利用することができます。 詳しくは、マニュアルを参照してください。
環境設定
moduleコマンドで環境設定が必要です。
- Intelコンパイラ環境を使用する場合
$> module load intel/2024
使用例
MKLをリンクする際のコンパイラオプションについてはIntel Math Kernel Library Link Line Advisorを参照してください。
- Intelコンパイラ [C]/[C++]/[Fortran]
$> module load intel/2024 ↓
$> icx|icpx|ifx -o example example.[c|f] -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -ldl ↓
fftw3ライブラリ
fftw3ライブラリは、次のディレクトリにインストールされています。
ディレクトリ | 種類 | バージョン | 備考 |
---|---|---|---|
/usr/lib64 | fftw3 without MPI | 3.3.8 | システムデフォルト |
/opt/intel/oneapi/mkl | fftw3 | MKL版 |
使用例
- MKL版fftw3
MKLを利用する場合と同じ方法で利用できます。
MPI コンパイル
実行環境
MPI コンパイルは、ワークサーバ、計算サーバで実行できます。
MPI環境として、IntelMPIおよびOpenMPIが利用可能です。
環境設定
OpenMPIは、/etc/profile.dにて初期設定を行っています。デフォルトで使用できます。
設定可能なmoduleファイルを以下に示します。
MPI | moduleファイル名 |
---|---|
Intel MPI | intel/2024 |
OpenMPI(4.1.5a1) | OS標準 |
コンパイル実行例
IntelMPI
$> module load intel/2024 ↓
$> mpiicx -o intelmpi_64 intelmpi_64.c↓
OpenMPI
$> mpicc -o openmpi_64 openmpi_64.c↓
ScaLAPACK
MPI環境で ScaLAPACK が利用可能です。 以下に、ScaLAPACK(/BLACS) をリンクする実行例を示します。
IntelMPI
[C]/[Fortran]
$> module load intel/2024 ↓
$> mpiicx|mpiifx -o intelmpi_sltest intelmpi_sltest.[c|f] -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64
-lmkl_core -lmkl_sequential -lpthread -lm -ldl ↓
OpenMP プログラムのコンパイル
実行環境
OpenMP を使用したプログラムのコンパイルは、ワークサーバで実行できます。
環境設定
コンパイルを行う前にmoduleコマンドで環境変数設定を行う必要があります。
コンパイル実行例
gcc
以下に、gccを使ったコンパイルの例を示す。
$> gcc -fopenmp -o openmp_64.gcc openmp_64.c ↓
Intel コンパイラ
以下に、Intelコンパイラを使ったコンパイルの例を示す。
$> module load intel/2024 ↓
$> icx -qopenmp -o openmp_64.icc openmp_64.c ↓
PGI(nvhpc) コンパイラ
以下に、PGIコンパイラを使ったコンパイルの例を示す。
$> module load nvhpc/24.1 ↓
$> pgcc -mp -o openmp_64.pgi openmp_64.c ↓