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