2. インストール方法¶
2.1. はじめに¶
UNIXにおける一般的なインストール手順(./configure; make; make install)により,インストールを行う.
./configure に何もオプションをつけない場合,XcalableMPのみがインストールされる.XcalableACCとOpenACCをインストールする場合,./configure にオプションをつける必要がある. 一般的な手順 および 各スーパーコンピュータの場合 ではXcalableMPのインストール手順について説明し,オプショナルな手順 ではXcalableACCとOpenACCのインストール手順について説明する.
2.2. 入手方法¶
公式サイトから入手する方法とGitHubから入手する方法がある.
2.2.1. 公式サイト¶
http://omni-compiler.org のトップページから入手できる. Stable版とNightly Build版がある. Nightly Build版は,毎日深夜0時ごろ(日本時間)に,GitHub上にある最新リポジトリが前日から更新されていると生成される.
2.2.2. GitHub¶
下記のコマンドで入手できる.
$ git clone --recursive https://github.com/omni-compiler/omni-compiler.git
2.3. 依存関係のあるソフトウェア¶
Omni Compilerのインストールの前に,下記のソフトウェアをインストールする必要がある.
- Yacc
- Lex
- C Compiler (supports C90)
- Fortran Compiler (supports Fortran 90)
- C++ Compiler
- Java Compiler
- MPI Implementation (supports MPI-2 or over)
- libxml2
- make
以下に,主要Linuxディストリビューションにおけるインストール手順について示す.
- Debian GNU/Linux 9.0
$ sudo aptitude install flex gcc gfortran g++ openjdk-8-jdk libopenmpi-dev openmpi-bin libxml2-dev byacc make perl
- Ubuntu 18.04
$ sudo apt-get install flex gcc gfortran g++ openjdk-8-jdk libopenmpi-dev openmpi-bin libxml2-dev byacc make perl
- CentOS 7.2
$ sudo yum install flex gcc gfortran gcc-c++ java-1.7.0-openjdk-devel openmpi-devel libxml2-devel byacc make perl
2.4. 一般的な手順¶
一般的なUNIX環境におけるインストール手順について説明する.
2.4.1. ビルドとインストール¶
$ ./configure --prefix=(INSTALL PATH)
$ make
$ make install
(INSTALL PATH) には,インストール先を指定する.
注釈
(INSTALL PATH) にはOmni Compilerのソースコードのディレクトリは指定できません.
2.4.2. PATHの設定¶
- bashやzshの場合
$ export PATH=(INSTALL PATH)/bin:$PATH
- cshやtcshの場合
% setenv PATH (INSTALL PATH)/bin:$PATH
2.5. 各スーパーコンピュータの場合¶
./configure に --target=(machine name) でマシンを指定することにより,下記のスーパーコンピュータに適したOmni Compilerのビルドを行うことができる.
2.5.1. スーパーコンピュータ「京」¶
$ ./configure --target=Kcomputer-linux-gnu --prefix=(INSTALL PATH)
$ make
$ make install
2.5.2. Fujitsu FX100¶
$ ./configure --target=FX100-linux-gnu --prefix=(INSTALL PATH)
$ make
$ make install
片側通信の実装に,富士通MPI拡張RDMAではなくMPI Version 3を用いたい場合は, ./configure に --disable-fjrdma を追加する.
$ ./configure --target=FX100-linux-gnu --disable-fjrdma --prefix=(INSTALL PATH)
2.5.3. Fujitsu FX10¶
$ ./configure --target=FX10-linux-gnu --prefix=(INSTALL PATH)
$ make
$ make install
2.5.4. Intel Knights Landing¶
$ ./configure --target=KNL-linux-gnu --prefix=(INSTALL PATH)
$ make
$ make install
2.5.5. Intel Knights Corner¶
$ ./configure --target=KNC-linux-gnu --prefix=(INSTALL PATH)
$ make
$ make install
2.5.6. NEC SX-ACE¶
ログインノードに libxml2 がインストールされていない場合は, libxml2 をインストールする.
$ tar xfz libxml2-git-snapshot.tar.gz
$ cd libxml2-2.9.2
$ ./configure --without-python --prefix=(LIBXML2 PATH)
$ make
$ make install
次に,Omni Compilerのインストールを行う.
$ ./configure --target=sxace-nec-superux --with-libxml2=(LIBXML2 PATH) --prefix=(INSTALL PATH)
$ make
$ make install
2.5.7. NEC SX9¶
$ ./configure --target=sx9-nec-superux --prefix=(INSTALL PATH)
$ make
$ make install
2.5.8. HITACHI SR16000¶
$ bash
$ export PATH=/opt/freeware/bin/:$PATH
$ export PATH=/usr/java6/jre/bin/:$PATH
$ bash ./configure --target=powerpc-hitachi-aix --prefix=(INSTALL PATH)
$ make
$ make install
2.6. オプショナルな手順¶
2.6.1. OpenACCのインストール¶
--enable-openacc を ./configure に付加する.必要に応じてCUDAのインストールパスを --with-cuda=(CUDA PATH) で設定する.
$ ./configure --enable-openacc --with-cuda=(CUDA PATH)
$ make
$ make install
OpenACC用のランタイムを生成する際に利用する nvcc コマンドにオプションを設定することにより,より適したランタイムを生成できる可能性がある.その場合,./configure に --with-gpu-cflags="(NVCC CFLAGS)" を付加する.
$ ./configure --enable-openacc --with-cuda=(CUDA PATH) --with-gpu-cflags="-arch=sm_20 -O3"
2.6.2. XcalableACCのインストール¶
--enable-openacc --enable-xacc を ./configure に付加する.他はOpenACCと同様である.
$ ./configure --enable-openacc --enable-xacc --with-cuda=(CUDA PATH)
$ make
$ make install
2.6.3. PGIコンパイラを使う場合¶
--with-cuda=(CUDA PATH) には,PGIコンパイラに同梱されているCUDAを指定する.ただし,Omni CompilerのビルドにはNVIDIAが提供しているCUDAも必要である.
例えば,PGI Community Edition 16.10を/opt/pgi-1610に,NVIDIAが提供しているCUDA 7.5を/opt/cuda-7.5にインストールしている場合は,下記のように設定を行う.
$ export PATH=/opt/cuda-7.5/bin:$PATH
$ which nvcc
$ /opt/cuda-7.5/bin/nvcc
$ ./configure --enable-openacc --enable-xacc --with-cuda=/opt/pgi-1610/linux86-64/2016/cuda/7.5/
$ make
$ make install
2.6.4. XcalableMPにおける他の片側通信ライブラリの利用¶
XcalableMPにおいてMPIと他の片側通信ライブラリとを併用することにより,より高速なランタイムを生成することができる場合がある.Omni Compilerは下記の片側通信ライブラリをサポートしている.
- 富士通MPI拡張RDMA
- GASNet
- MPI Version 3
2.6.4.1. 富士通MPI拡張RDMA¶
富士通MPI拡張RDMAは,スーパーコンピュータ「京」,FX100,FX10でのみ利用可能である. ./configure --target=(machine name) を実行することにより,自動的にOmni Compilerは富士通MPI拡張RDMAを利用する.
2.6.4.2. GASNet¶
GASNetは,U.C. Berkeleyが開発している片側通信ライブラリである.GASNetを利用する場合,./configure にGASNetのインストールパスとconduitを指定する.
$ ./configure --with-gasnet=(GASNET PATH) --with-gasnet-conduit=(GASNET CONDUIT)
--with-gasnet-conduit=(GASNET CONDUIT) を省略した場合,自動的にOmni Compilerがconduitを選択する.
2.6.4.3. MPI Version 3¶
MPI Version 3は下記の条件が成立した場合,自動的に選択される.
- 利用しているMPIの実装がMPI Version 3に対応している場合
- GASNetを指定しない場合
- スーパーコンピュータ「京」,FX100,FX10以外のマシンの場合
2.6.4.4. 片側通信ライブラリの確認方法¶
omni-compilerがどの片側通信ライブラリが利用するのかは,./configure の最後に出力される Configuration Summary で確認することができる.
- 富士通MPI拡張RDMAの場合
Onesided : yes
Communication Library : Fujitsu RDMA
- GASNetの場合
Onesided : yes
Communication Library : GASNet
- MPI Version 3の場合
Onesided : yes
Communication Library : MPI3
- 片側通信ライブラリを利用しない場合
Onesided : no
2.6.5. Omni Compilerで利用するコンパイラの指定¶
Omni Compilerが利用しているコンパイラは,そのバイナリの利用場所により2種類に分類できる.
- ローカルコンパイラ:Pre-process・Frontend・Translator・Backendに利用する.ローカルコンパイラが生成するバイナリは,Omni Compilerのビルドを行うマシン上(例えばログインノード)で利用される.
- ネイティブコンパイラ:実行ファイルの生成やOmni Compilerのランタイムの生成に利用する.ネイティブコンパイラが生成するバイナリは,計算を行うマシン上で利用される.
./configure は上記のコンパイラを自動的に設定するが,ユーザが指定することも可能である.そのための変数は下記の通りである.
- ローカルコンパイラ
| 変数 | 意味 |
|---|---|
| CC | C compiler |
| CFLAGS | C compiler flags |
| FC | Fortran compiler |
| FCFLAGS | Fortran compiler flags |
| JAVA | Java application launcher |
| JAVAC | Java compiler |
| JAR | Java Archive Tool |
- ネイティブコンパイラ
| 変数 | 意味 |
|---|---|
| MPI_CPP | C preprocessor |
| MPI_CPPFLAGS | C preprocessor flags |
| MPI_CC | C compiler |
| MPI_CFLAGS | C compiler flags |
| MPI_CLIBS | C compiler linker flags |
| MPI_FPP | Fortran preprocessor |
| MPI_FPPFLAGS | Fortran preprocessor flags |
| MPI_FC | Fortran compiler |
| MPI_FCFLAGS | Fortran compiler flags |
| MPI_FCLIBS | Fortran compiler linker flags |
例えば, CC に icc を使いたい場合は, ./configure CC=icc と実行する.
2.6.6. ランタイムに対するBLASの利用¶
Omni Compilerのランタイムの一部には,BLASが利用可能である.例えば,組み込み関数の中の1つである xmp_matmul() において,行列演算のBLASを利用すると高速に実行が可能になる.
2.6.6.1. 何も指定しない場合(デフォルト)¶
ランタイムが用意している内部関数が利用される.
2.6.6.2. スーパーコンピュータ「京」の場合¶
./configure --target=Kcomputer-linux-gnu を実行することにより,ランタイム内で「京」が提供するBLASが利用される.
2.6.6.3. FX100もしくはFX10の場合¶
./configure --enable-SSL2BLAMP を実行することにより,ランタイム内でFX100もしくはFX10が提供するBLASが利用される.
2.6.6.4. Intel MKLを使う場合¶
./configure --enable-intelmkl を実行することにより,ランタイム内でIntel MKLが利用される.
2.6.6.5. ユーザが指定するBLASを利用する場合¶
./configure --with-libblas=(BLAS PATH) を実行することにより,指定されたBLASが利用される.
2.7. Dockerを用いる場合¶
Docker Hubに用意しているOmni CompilerのDockerイメージを用いる方法を示す.
$ docker run -it -u xmp -w /home/xmp omnicompiler/xcalablemp