Ubuntu 14.04の経験を生かして、Ubuntu 16.04での構築に再挑戦です。
参考はこちら
0.準備
apt-getを使って必要なものをインストールします。
$ sudo apt-get install gfortran g++ python-dev python-qt4 python-numpy liblapack-dev libblas-dev tcl tk zlib1g-dev bison flex checkinstall libx11-dev cmake qt4-dev-tools libmotif-dev
$sudo apt-get install libboost-all-dev doxygen
$tar xfvz openmpi-3.0.0.tar.gz $cd ./openmpi-3.0.0 $./configure --prefix=/usr/local $sudo make all install
~/.bashrcを開いて、ファイルの最後に次の文を付け加えます。
PATH=/usr/loca/bin:$PATH LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH MANPATH=/usr/local/share/man:$MANPATH export PATH LD_LIBRARY_PATH MANPATH
次に /etc/ld.so.conf.d/ を管理者権限で開いて”openmpi.conf”というファイルを作り、次の内容を記述します。
/usr/local/lib
$ tar xfvz OpenBLAS-0.2.20.tar.gz $ cd OpenBLAS-0.2.20 $ make NO_AFFINITY=1 USE_OPENMP=1 $ make PREFIX=/opt/OpenBLAS install $ echo /opt/OpenBLAS/lib | sudo tee -a /etc/ld.so.conf.d/openblas.conf $ sudo ldconfig
以上です。
$ cd aster-full-src-13.4.0 $ sed -i "s:PREFER_COMPILER\ =\ 'GNU':PREFER_COMPILER\ =\'GNU_without_MATH'\nMATHLIB=\ '/opt/OpenBLAS/lib/libopenblas.a':g" setup.cfg
続けて
$ python setup.py install
以上です。参考のとおりに並列計算用のホストファイルを作成しておきます。
$ echo "$HOSTNAME cpu=$(cat /proc/cpuinfo | grep processor | wc -l)" > /opt/aster/etc/codeaster/mpi_hostfile
$ tar xfvz scalapack_installer.tgz $ cd scalapack_installer $ ./setup.py --lapacklib=/opt/OpenBLAS/lib/libopenblas.a --mpicc=mpicc --mpif90=mpif90 --mpiincdir=/usr/local/include --ldflags_c=-fopenmp --ldflags_fc=-fopenmp --prefix=/opt/scalapack
4. parmetis
ソースコードをダウンロードして展開します。
$ tar xvf parmetis-4.0.3.tar.gz $ cd parmetis-4.0.3 $ make config prefix=/opt/parmetis-4.0.3 $ make
完了したら、動作確認をします。
$ cd Graphs $ mpirun -np 8 ptest rotor.graph rotor.graph.xyz
特にエラーが出なければ終了です。
5.scotch
Codeasterのソースコードに含まれているscotch-6.0.4-aster5.tar.gzを/opt下に展開します。
$ cd /opt/scotch-6.0.4/src
Makefile.incはこちら
$ make scotch esmumps $ make ptscotch ptesmumps
完了したら、動作確認です。
$make check $make ptcheck
問題なければ完了です。
6.Mumps
Codeasterのソースコードに含まれているmumps-5.1.1-aster2.tar.gzを/opt下に展開します。フォルダ名はmumps-5.1.1-mpiとしています。
$ cd /opt/mumps-5.1.1-mpi
Makefile.incはこちら
$ make all
終了したらexamplesに移動して動作チェックを行います。
7.Petscのインストール
petsc-3.7.7.tar.gzをダウンロードし、/opt下に展開します。まず、configです。
$ cd /opt/petsc-3.7.7 $ ./configure --configModules=PETSc.Configure --optionsModule=config.compilerOptions --with-mpi-dir=/usr/local --with-blas-lapack-lib=/opt/OpenBLAS/lib/libopenblas.a --download-hypre=yes --download-ml=yes --with-debugging=0 COPTFLAGS=-O1 CXXOPTFLAGS=-O1 FOPTFLAGS=-O1 --with-x=0 --with-shared-libraries=0 --download-mumps=yes --with-scalapack-dir=/opt/scalapack --with-ptscotch-dir=/opt/scotch-6.0.4 --with-parmetis-dir=/opt/parmetis-4.0.3 --with-metis-dir=/opt/aster/public/metis-5.1.0 --download-mumps-commit=v5.1.1-p3 --with-ssl=0
そしてmakeです。
make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt all
次に動作確認です。
make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt test make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt streams
以上です。
8.wafを使って並列版Code Asterの構築
mpi_get_procid_cmd : echo $OMPI_COMM_WORLD_RANK
mpirun_cmd : mpirun -np %(mpi_nbcpu)s %(program)s
参考のとおりにCode_Asterのソースファイルを解凍し移動します。
Ubuntu_gnu.pyはこちら hdf5のembedを止めています。
Ubuntu_gnu_mpi.pyはこちら
$ export ASTER_ROOT=/opt/aster $ ./waf configure --use-config-dir=$ASTER_ROOT/13.4/share/aster --use-config=Ubuntu_gnu_mpi --prefix=$ASTER_ROOT/PAR13.4PE $ ./waf build -p $ ./waf install
Warningがいっぱいでますが、構築はできました。
最後に、/opt/aster/etc/codeaster/asterを開いて、 vers : PAR13.4:/opt/aster/PAR13.4PE/share/aster を追加します。
ASTKから並列版の実行時ですが、ここでも紹介しましたがcommの中身の修正が必要でした。
以上です。
コメント