Quantcast
Channel: FOCUSスパコン利用案内
Viewing all articles
Browse latest Browse all 874

3.2.GNUコンパイラ

$
0
0

目次 (3.2.GNUコンパイラ)

3.2.   GNUコンパイラ
3.2.1.  コンパイラ環境変数の設定(GNUコンパイラ)
3.2.2.  コンパイルコマンド(GNUコンパイラ)
3.2.3.  MPI環境変数の設定(GNUコンパイラ)
3.2.3.1. Open MPI 1.6.5
3.2.3.2. MPICH2 1.4.1p1
3.2.4.  コンパイラ、MPI環境の切替え
3.2.5.  コンパイル・オプション(GNUコンパイラ)
3.2.6.  コンパイル方法(GNUコンパイラ)
3.2.6.1. 逐次プログラム
3.2.6.2. OpenMPプログラム
3.2.6.3. MPIプログラム(OpenMPI、MPICH2、IntelMPI)
3.2.7.  コンパイル時の注意点 (GNU コンパイラ)

 

▲このページの先頭へ

3.2. GNU コンパイラ

コンパイル環境としてGCC 4.4.7 とGCC 4.8.2 を利用する事ができます。
標準でGCC 4.4.7 が利用できます。GCC 4.8.2 を利用するときは以下の3.3.1 の手順を実施して、環境を設定します。

 

3.2.1. コンパイラ環境変数の設定(GNU コンパイラ)

1.環境の設定

$ module load PrgEnv-gnu482

 

2.設定環境の確認

$ module list
Currently Loaded Modulefiles:
    1) PrgEnv-gnu482

 

3.環境の設定解除

$ module unload PrgEnv-gnu482

 

▲このページの先頭へ

3.2.2. コンパイルコマンド(GNU コンパイラ)

各言語のコンパイルコマンドは以下の通りです。

使用言語 コマンド コマンド形式
Fortran gfortran gfortran [オプション] ファイル…
C 言語 gcc gcc [オプション] ファイル…
C++ g++ g++ [オプション] ファイル…

 

▲このページの先頭へ

3.2.3. MPI 環境変数の設定(GNU コンパイラ)

3.2.3.1. Open MPI 1.6.5

1. 環境の設定

$ module load gnu/openmpi165

 

2. 設定環境の確認

$ module list
Currently Loaded Modulefiles:
    1) gnu/openmpi165

3. 環境の設定解除

$ module unload gnu/openmpi165

 

4.コンパイルコマンド

 各言語のコンパイルコマンドは以下の通りです。

使用言語 コマンド コマンド形式
MPI(Fortran) mpif90 mpif90 [オプション] ファイル…
MPI(C 言語) mpicc mpicc [オプション] ファイル…
MPI(C++) mpicxx mpixx [オプション] ファイル…

 

▲このページの先頭へ

3.2.3.2. MPICH2 1.4.1p1

1.環境の設定

$ module load gnu/mpich2141p1

 

2.設定環境の確認

$ module list
Currently Loaded Modulefiles:
    1) gnu/mpich2141p1

 

3.環境の設定解除

$ module unload gnu/mpich2141p1

 

4.コンパイルコマンド

各言語のコンパイルコマンドは以下の通りです。

使用言語 コマンド コマンド形式
MPI(Fortran) mpif90 mpif90 [オプション] ファイル…
MPI(C 言語) mpicc mpicc [オプション] ファイル…
MPI(C++) mpicxx mpixx [オプション] ファイル…

 

▲このページの先頭へ

3.2.4. コンパイラ、MPI 環境の切替え

コンパイラ、MPI 環境を切り替えるコマンドは以下の通りです。

コンパイラ MPI 環境設定コマンド 設定解除コマンド
標準GNU(GNU 4.4.7) OpenMPI module load gnu/openmpi165 module unload gnu/openmpi165
MPICH2 module load gnu/mpich2141p1 module unload gnu/mpich2141p1
IntelMPI module load impi module unload impi
GNU4.8.2 OpenMPI module load PrgEnv-gnu482
module load gnu/openmpi165
module unload PrgEnv-gnu482
module unload gnu/openmpi165
MPICH2 module load PrgEnv-gnu482
module load gnu/mpich2141p1
module unload PrgEnv-gnu482
module unload gnu/mpich2141p1
IntelMPI module load PrgEnv-gnu482
module load impi
module unload PrgEnv-gnu482
module unload impi

 

▲このページの先頭へ

3.2.5. コンパイル・オプション(GNU コンパイラ)

GNU コンパイラの主なコンパイル・オプションを示します。

オプション 説明
-c ソースファイルのコンパイル、または、アセンブルを行いますが、リンクは行いません。
-o file ソースファイルのコンパイル、または、アセンブルを行いますが、リンクは行いません。
-o file 出力先を引数file に指定します。このオプションはGCC が実行可能ファイル、オブジェクトファイル、アセンブラファイル、プリプロセス済みC コードなどの、いかなる種類の出力を行なう場合にも適用可能です。出力ファイルは1 つしか指定できないため、'-o'を複数の入力ファイルをコンパイルする際に使用することは、実行ファイルを出力する時以外は無意味です。'-o'オプションを指定しなかった場合のデフォルトは、実行ファイルを作る場 合
は'a.out'という名前であり、'source.suffix'の形式のファイル名を持ったソースファイルのオブジェクトファイルは'source.o'であり、アセンブラのファイルは'source.s'です。プリプロセス済みのC 言語は、全て標準出力に送られます。
-I インクルードファイルのパスを指定します。
-g デバッグ用の情報を保存します。
-l library デバッグ用の情報を保存します。
-l library 名前がlibrary であるライブラリをリンク時に使用します。
-static ダイナミックリンクをサポートするシステムにおいて、このオプションは共有ライブラリとのリンクを抑制します。
-O2 高度な最適化を行います。サポートされている最適化手段のうち、空間と速度のトレードオフを含まないものはほとんど使用されます。例えばループのアンローリングや関数のインライン化は行われません。-O と比較して、このオプションはコンパイル時間と生成コードの性能の双方を増加させます。
-O3 さらなる最適化を行います。これは-O2 が行う全ての最適化手段に加えて-finlinefunctionsも有効にします
-O0 最適化を行いません。

 

▲このページの先頭へ

3.2.6. コンパイル方法(GNU コンパイラ)

主なコンパイル方法を以下に示します。

3.2.6.1. 逐次プログラム

1. Fortran の例

$ gfortran test.f90

 

2. C 言語の例

$ gcc test.c

 

3.C++の例

$ g++ test.cpp

 

▲このページの先頭へ

3.2.6.2. OpenMP プログラム

1. Fortran の例

$ gfortran –fopenmp test.f90

 

2. C 言語の例

$ gcc -fopenmp test.c

 

3.C++の例

$ g++ -fopenmp test.cpp

 

▲このページの先頭へ

3.2.6.3. MPI プログラム(OpenMPI、MPICH2、IntelMPI)

1. Fortran の例

$ mpif90 test.f90

 

2. C 言語の例

$ mpicc test.c

 

3.C++の例

$ mpiCC test.cpp

 

▲このページの先頭へ

3.2.7.コンパイル時の注意点 (GNU コンパイラ)

各システム毎でプロセッサーのアーキテクチャが異なります。コンパイル時に以下のオプション指定に注意してください。

GCC 4 の場合

オプション Aシステム Bシステム Cシステム Dシステム Eシステム Fシステム Gシステム Hシステム
-march=corei7
-march=corei7-avx
-march=corei-avx-i
-march=corei-avx2
上記オプション無し

☓:指定すると動作しない
○:動作する

 

GCC 6 の場合

オプション Aシステム Bシステム Cシステム Dシステム Eシステム Fシステム Gシステム Hシステム
-march=westmere
-march=sandybridge
-march=ivybridge
-march=broadwell
上記オプション無し

☓:指定すると動作しない
○:動作する

 



Viewing all articles
Browse latest Browse all 874

Trending Articles