xyce 6.2をソースからCentOS 5 にシリアル版インストール

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