Post date: 2015/05/18 15:01:58
Sandia National Labの サイトから、Xyce-6.2.tar.gzとtrilinos-11.10.2-Source.tar.gz
をダウンロードし、展開。
1. . trillnosライブラリを/usr/local/anagix_tools/XyceLibs/Serial に作成
trillnosには、cmake2.8.11以降が必要なので、yum install cmake28 した。また、
yum install blas-devel blas lapack-devel lapack fftw-devel fftw suitesparse-devel suitesparse
Building Guide にしたがって、以下のスクリプト(reconfigure)を適当なディレクトリで作成し実行する。
#!/bin/bash
SRCDIR=/mnt/anagix/trilinos-11.10.2-Source
ARCHDIR=/usr/local/anagix_tools/XyceLibs/Serial
FLAGS="-O3 -fPIC"
cmake28 \
-G "Unix Makefiles" \
-DCMAKE_C_COMPILER=/opt/centos/devtoolset-1.1/root/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/opt/centos/devtoolset-1.1/root/usr/bin/g++ \
-DCMAKE_Fortran_COMPILER=/opt/centos/devtoolset-1.1/root/usr/bin/gfortran \
-DCMAKE_CXX_FLAGS="$FLAGS" \
-DCMAKE_C_FLAGS="$FLAGS" \
-DCMAKE_Fortran_FLAGS="$FLAGS" \
-DCMAKE_INSTALL_PREFIX=$ARCHDIR \
-DCMAKE_MAKE_PROGRAM="make" \
-DTrilinos_ENABLE_NOX=ON \
-DTrilinos_ENABLE_LOCA=ON \
-DTrilinos_ENABLE_EpetraExt=ON \
-DEpetraExt_BUILD_BTF=ON \
-DEpetraExt_BUILD_EXPERIMENTAL=ON \
-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON \
-DTrilinos_ENABLE_TrilinosCouplings=ON \
-DTrilinos_ENABLE_Ifpack=ON \
-DTrilinos_ENABLE_Isorropia=ON \
-DTrilinos_ENABLE_AztecOO=ON \
-DTrilinos_ENABLE_Belos=ON \
-DTrilinos_ENABLE_Teuchos=ON \
-DTeuchos_ENABLE_COMPLEX=ON \
-DTrilinos_ENABLE_Amesos=ON \
-DAmesos_ENABLE_KLU=ON \
-DAmesos_ENABLE_UMFPACK=ON \
-DTrilinos_ENABLE_Sacado=ON \
-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \
-DTPL_ENABLE_AMD=ON \
-DAMD_LIBRARY_DIRS="/usr/lib" \
-DTPL_AMD_INCLUDE_DIRS="/usr/include/suitesparse" \
-DTPL_ENABLE_UMFPACK=ON \
-DUMFPACK_LIBRARY_DIRS="/usr/lib" \
-DTPL_UMFPACK_INCLUDE_DIRS="/usr/include/suitesparse" \
-DTPL_ENABLE_BLAS=ON \
-DTPL_ENABLE_LAPACK=ON \
$SRCDIR
注意: bison, flexなどCentOSの古いバージョンではだめです。
2. Makefileができたので、make && make install (注意: 最初reconfigureを間違っていたときはmake installはrootになる必要がありましたが、/usr/local/anagix_tools/XyceLibs/Serialへのインストールだけなら不要のはずです。)
3. Xyceを /usr/local/anagix_toolsにインストールする
CXXFLAGS="-O3" LDFLAGS="-L/usr/local/anagix_tools/XyceLibs/Serial/lib" CPPFLAGS="-I/usr/include/suitesparse -I/usr/local/anagix_tools/XyceLibs/Serial/include -I/usr/local/anagix_tools/include" ./configure --prefix=/usr/local/anagix_tools
注意: bison, flexを/usr/local/anagix_toolsに入れたので、CPPFLAGSに -I/usr/local/anagix_tools/include を追加する必要がありました。
Makefileができたので、make && make install
【メモ】
1. Xyceのリンクの 際に以下の 警告がでている
/opt/centos/devtoolset-1.1/root/usr/libexec/gcc/x86_64-CentOS-linux/4.7.2/ld: warning: libgfortran.so.1, needed by /usr/lib/../lib64/liblapack.so, may conflict with libgfortran.so.3
yum installしたblasとlapackのバージョンが古く libgfortran.so.1を使っているのが問題だと思われる。/opt/centos/devtoolset-1.1/root/usr/bin/gfortranを使ってソースからインストールすれば解決するだろう。
2. Trilinosをcmakeする際に、XyceのBuilding guideを読まずに適当なスクリプトを実行した。そのあと、上記のreconfigureを作成し実行した。そうすると、Xyceをリンクする際に以下のようなエラーが大量に発生した。
./.libs/libxyce.a(N_LAS_BelosSolver.o): In function `Epetra::TsqrAdaptor::prepareNodeTsqr(Epetra_MultiVector const&) [clone .isra.171]':
N_LAS_BelosSolver.C:(.text+0x1ae1): undefined reference to `KokkosClassic::SerialNode::SerialNode(Teuchos::ParameterList&)'
./.libs/libxyce.a(N_LAS_BelosSolver.o): In function `TSQR::SequentialTsqr<int, double>::QR_produces_R_factor_with_nonnegative_diagonal() const':
N_LAS_BelosSolver.C:(.text._ZNK4TSQR14SequentialTsqrIidE46QR_produces_R_factor_with_nonnegative_diagonalEv[_ZNK4TSQR14SequentialTsqrIidE46QR_produces_R_factor_with_nonnegative_diagonalEv]+0x5): undefined reference to `TSQR::LAPACK<int, double>::QR_produces_R_factor_with_nonnegative_diagonal()'
...
Trilinosをインストールしなおし、XyceLibs/Serialを作る直すことで解決した。
【2016/2/11にXyce-6.4をインストールした時のメモ】
Trilinosは、Xyce-6.2で使ったtrilinos-11.10.2を使った
scl enable devtoolset-2 bash
CXXFLAGS="-O3" LDFLAGS="-L/usr/local/anagix_tools/XyceLibs/Serial/lib" CPPFLAGS="-I/usr/include\
/suitesparse -I/usr/local/anagix_tools/XyceLibs/Serial/include -I/usr/local/anagix_tools/include" ./configure --prefix=/usr\
/local/anagix_tools
make && make install