DALAB情報発信用ブログ:OpenCAE+GPGPU+Peridynamics編

DALABで行っている研究活動の中で、OpenCAEやGPGPUや破壊解析の取り組みについてまとめてゆきます。

Peridigmを用いたPeridynamicsによる破壊解析:実行環境の準備(2)

2012年12月28日 10時17分51秒 | OpenCAE活用
構築環境のパッケージの導入を終えたところで、ソースパッケージのコンパイルとインストールを行います。慣れていないと不安で面倒ですが、設定変更を正確に行い所定のコマンドを実行するだけですので意外と簡単です。

構築環境はUbuntu12.04なのですが、日本語環境が構築されておりホームディレクトリに日本語のフォルダがいくつか作られています。ここではchromeウエブブラウザでパッケージをダウンロードするのですが、保存先がホームディレクトリのダウンロードフォルダになります。これだとコマンドラインから指定しにくいので、以下の手順で英語名Downloadへリンクを作っておきます。
$ cd ~
$ ln -s ダウンロード Download

以下のソースパッケージのインストールでは、ベースとなるシステム構築と同様に、全てを/optの中に配置することにします。なお/optは自由に読み書き出来るように、パーミッションが777にするため、以下のようにします。
また作業はdexcsユーザーとして行っているので、絶対パス表示すると/home/dexcs/ダウンロード(Download)がダウンロードディレクトリになります。
$ sudo chmod 777 /opt

■mpichの導入

mpichは定番の並列計算ライブラリで、様々な実装がありますが、ここではmpich2の後継であるmpich-3をインストールします。公式サイトhttp://www.mpich.org/downloads/から、ソースパッケージmpich-3.0.1 (stable release)をダウンロードします。各種のバイナリパッケージがありますが、ライブラリを参照するためソースコンパイルします。

ダウンロードディレクトリに移動して、ソースパッケージを展開し、ソースディレクトリに移動します。
$ cd ~/Download
$ tar xvfz mpich-3.0.1.tar.gz
$ cd mpich-3.0.1

インストール先を/opt/mpichとして、構築環境設定コマンドconfigureを、以下のように実行します。
$ ./configure --prefix=/opt/mpich
「Configuration completed.」と表示されたら完了です。Makefileが生成されています。

コンパイルします。結構な時間がかかるので、暫く待ちます。エラー表示が無く、「make[1]: ディレクトリ `/home/dexcs/ダウンロード/mpich-3.0.1' から出ます」と表示されたら完成です。
$ make
インストールします。「make[1]: ディレクトリ `/home/dexcs/ダウンロード/mpich-3.0.1' から出ます」と表示されたら完成です。
$ make install
以下でインストールされていることが確認できます。
$ ls -l /opt/mpich

■boostの導入

boostは定番のC++ライブラリで、後で行うPeridigmの構築などで利用しますが、バージョン1.37以上が必要です。ダウンロードサイトhttp://sourceforge.net/projects/boost/files/boost/1.52.0/から、ソースパッケージboost_1_52_0.tar.gzをダウンロードします。

ダウンロードディレクトリに移動して、ソースパッケージを展開し、ソースディレクトリに移動します。
$ cd ~/Download
$ tar xvfz boost_1_52_0.tar.gz
$ cd boost_1_52_0

インストール先を/opt/boostとして、構築環境設定コマンドbootstrap.sh、以下のように実行します。
$ ./bootstrap.sh --prefix=/opt/boost
暫く待って「Bootstrapping is done. To build, run:」に続くように表示されたら完成です。以下のコマンドでコンパイルとインストールを続けて行います。暫く待って、「...updated 10682 targets...」と表示されたら完成です。
$ ./b2 install
以下でインストールされていることが確認できます。
$ ls -l /opt/boost

■hdf5の導入

hdf5は階層型のデータ記述ライブラリで、後で行うnetcdfの構築などで利用しますが、バージョンは最新版を用いて、ダウンロードサイトhttp://www.hdfgroup.org/ftp/HDF5/current/src/から、ソースパッケージhdf5-1.8.10.tar.gzをダウンロードします。

ダウンロードディレクトリに移動して、ソースパッケージを展開し、ソースディレクトリに移動します。
$ cd ~/Download
$ tar xvfz hdf5-1.8.10.tar.gz
$ cd hdf5-1.8.10

構築環境設定ツールconfigureの実行スクリプトconfig.shを、以下の内容で作る。最初にコンパイル時のフラグを設定し、インストール先は/opt/HDF5として、並列処理も可能にする。

===== config.sh =====
CC=mpicc \
CFLAGS="-fPIC -DMPICH_IGNORE_CXX_SEEK" \
FC=mpif90 \
FCFLAGS="-fPIC -DMPICH_IGNORE_CXX_SEEK" \
CXX=mpicxx \
CXXFLAGS="-fPIC -DMPICH_IGNORE_CXX_SEEK" \
./configure \
--prefix=/opt/HDF5 \
--enable--parallel
=====================

実際にconfig.shを実行する。
$ sh ./config.sh
「Large File Support (LFS): yes」と表示されたら完了です。Makefileが生成されています。

コンパイルします。結構な時間がかかるので、暫く待ちます。エラー表示が無く、「make[1]: ディレクトリ `/home/dexcs/ダウンロード/hdf5-1.8.10/perform' から出ます」と表示されたら完成です。
$ make
インストールします。「make[1]: ディレクトリ `/home/dexcs/ダウンロード/hdf5-1.8.10/hl' から出ます」と表示されたら完成です。
$ make install
以下でインストールされていることが確認できます。
$ ls -l /opt/HDF5

■netcdfの導入

netcdfはネットワーク共通データ形式のライブラリで、後で行うtrilinosの構築などで利用しますが、バージョンは4.2以上が必要です。ダウンロードサイトhttp://www.unidata.ucar.edu/downloads/netcdf/netcdf-4_2_1_1/index.jspから、ソースパッケージnetcdf-4.2.1.1.tar.gzをダウンロードします。

ダウンロードディレクトリに移動して、ソースパッケージを展開し、ソースディレクトリに移動します。
$ cd ~/Download
$ tar xvfz netcdf-4.2.1.1.tar.gz
$ cd netcdf-4.2.1.1

構築環境設定ツールconfigureの実行スクリプトconfig.shを、以下の内容で作る。最初にコンパイル時のフラグを設定し、インストール先は/opt/netcdfとする。

===== config.sh =====
CC=mpicc \
LDFLAGS="-L/opt/HDF5/lib" \
CFLAGS="-fPIC -DMPICH_IGNORE_CXX_SEEK" \
CPPFLAGS="-I/opt/HDF5/include" \
./configure \
--prefix=/opt/netcdf
=====================

またPeridigm破壊解析において、多数の材料情報を扱えるように、netcdf.hの以下の部分を修正する。
$ vi include/netcdf.h

===== netcdf.h =====
#define NC_MAX_DIMS 65536 /* max dimensions per file */
#define NC_MAX_VARS 524288 /* max variables per file */
#define NC_MAX_VAR_DIMS 8 /* max per variable dimensions */
====================

実際にconfig.shを実行する。
$ sh ./config.sh
「config.status: executing libtool commands」と表示されたら完了です。Makefileが生成されています。

コンパイルします。少しだけ待ちます。エラー表示が無く、「make[1]: ディレクトリ `/home/dexcs/ダウンロード/netcdf-4.2.1.1' から出ます」と表示されたら完成です。
$ make
インストールします。「make[1]: ディレクトリ `/home/dexcs/ダウンロード/netcdf-4.2.1.1' から出ます」と表示されたら完成です。
$ make install
以下でインストールされていることが確認できます。
$ ls -l /opt/netcdf

■trilinosの導入

trilinosはオブジェクト指向のコンポーネントベース開発システムで、Peridigmはこれをベースに構築されています。今回入手したPeridigmでは、trilinosのバージョンは11.0以上が必要です。ダウンロードサイトhttp://trilinos.sandia.gov/download/trilinos-11.0.htmlから、ユーザー登録をしてから、ソースパッケージtrilinos-11.0.3-Source.tar.gzをダウンロードします。

このtrilinosはバージョンの更新に備えて、専用ディレクトリ~/TrilinosWorkで構築を進めます。以下の手順で準備します。
$ cd ~
$ mkdir TrilinosWork
$ cd TrilinosWork
$ mv ~/Download/trilinos-11.0.3-Source.tar.gz . (最後のドット . に注意)
$ tar xvfz trilinos-11.0.3-Source.tar.gz

構築環境設定ツールcmakeの実行スクリプトcmake-trilinos.shを、TrilinosWork内に以下の内容で作る。インストール先は/opt/trilinosとする。

===== cmake-trilinos.sh =====
rm -f CMakeCache.txt
cmake \
-D CMAKE_INSTALL_PREFIX:PATH=/opt/trilinos \
-D CMAKE_BUILD_TYPE:STRING=RELEASE \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_ALL_FORWARD_DEP_PACKAGES:BOOL=OFF \
-D TPL_ENABLE_BLAS:BOOL=ON \
-D TPL_BLAS_LIBRARIES:FILEPATH=/usr/lib/libblas.so.3gf \
-D TPL_ENABLE_LAPACK:BOOL=ON \
-D TPL_LAPACK_LIBRARIES:FILEPATH=/usr/lib/liblapack.so.3gf \
-D TPL_ENABLE_Boost:BOOL=ON \
-D TPL_Boost_INCLUDE_DIRS:PATH="/opt/boost/include" \
-D TPL_ENABLE_MPI:BOOL=ON \
-D MPI_BASE_DIR:PATH="/opt/mpich" \
-D MPI_CXX_COMPILER:STRING=mpicxx \
-D MPI_C_COMPILER:STRING=mpicc \
-D MPI_Fortran_COMPILER:STRING=mpif90 \
-D TPL_ENABLE_HDF5:BOOL=ON \
-D HDF5_INCLUDE_DIRS:PATH="/opt/HDF5/include" \
-D HDF5_LIBRARY_DIRS:PATH="/opt/HDF5/lib" \
-D TPL_ENABLE_Netcdf:BOOL=ON \
-D Netcdf_INCLUDE_DIRS:PATH="/opt/netcdf/include" \
-D Netcdf_LIBRARY_DIRS:PATH="/opt/netcdf/lib" \
-D CMAKE_CXX_FLAGS:STRING="-g -ansi -Wno-long-long -DMPICH_IGNORE_CXX_SEEK" \
-D CMAKE_C_FLAGS:STRING="-g -ansi -Wno-long-long -DMPICH_IGNORE_CXX_SEEK" \
-D CMAKE_Fortran_FLAGS:STRING="-g -ansi -Wno-long-long -DMPICH_IGNORE_CXX_SEEK" \
-D CMAKE_EXE_LINKER_FLAGS:STRING="-lgfortran -lm" \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
-D Trilinos_ENABLE_AztecOO:BOOL=ON \
-D Trilinos_ENABLE_Belos:BOOL=ON \
-D Trilinos_ENABLE_Epetra:BOOL=ON \
-D Trilinos_ENABLE_EpetraExt:BOOL=ON \
-D Trilinos_ENABLE_Ifpack:BOOL=ON \
-D Trilinos_ENABLE_NOX:BOOL=ON \
-D Trilinos_ENABLE_Phalanx:BOOL=ON \
-D Phalanx_EXPLICIT_TEMPLATE_INSTANTIATION=ON \
-D Trilinos_ENABLE_SEACAS:BOOL=ON \
-D Trilinos_ENABLE_Shards:BOOL=ON \
-D Trilinos_ENABLE_STK:BOOL=ON \
-D Trilinos_ENABLE_Teuchos:BOOL=ON \
-D Trilinos_ENABLE_Zoltan:BOOL=ON \
-D Trilinos_ENABLE_EXAMPLES:BOOL=OFF \
-D Trilinos_ENABLE_TESTS:BOOL=OFF \
-Wno-dev \
/home/dexcs/TrilinosWork/trilinos-11.0.3-Source
=============================

実際にcmake-trilinos.shを実行する。暫く処理が続きます。
$ sh ./cmake-trilinos.sh
「-- Build files have been written to: /home/dexcs/TrilinosWork」と表示されたら完了です。Makefileなど多数の構築用ファイルが生成されています。

コンパイルします。相当長く処理が続くので、コメントの進展の割合(%)を見ながら100%になるまで暫く待ちます。エラー表示が無く100%まで到達し、「/usr/bin/cmake -E cmake_progress_start /home/dexcs/TrilinosWork/CMakeFiles 0」と表示されたら完成です。
$ make
インストールします。「-- Installing: /opt/trilinos/include/IOContFileUtils.H」と表示されたら完成です。
$ make install
以下でインストールされていることが確認できます。
$ ls -l /opt/trilinos

以上でPeridigmの構築に必要な準備が全て整いました。もう後一息です。頑張りましょう。

※実行環境の準備(3)に続く※

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。