DAKOTA Install on DEXCS2012 for OpenFOAM(R)

DAKOTA というのは、今年辺り、そろそろブレークするかもしれないオープンソースの最適化ツール。次回のオープンCAE勉強会@岐阜でも紹介があるようです。

管理人も数年前に触って以来なので、最新版を試してみようとしました。しかしLinux版のバイナリはredHat用しかリリースされておらず、DEXCS2012(OSはMint13/ubuntu-12.04)上では動かなかったので、インストールに挑戦。一筋縄でいかなかったので、ここに要点を記しておくことにしました。

インストールの基本はソースコードに同梱のINSTALLというメモ

0) Install CMake 2.8.4 (or later) and ensure it is in your $PATH
1) gunzip Dakota_releasename.src.tar.gz
2) tar xvf Dakota_releasename.src.tar
3) mkdir BuildDakota; cd BuildDakota
4) export PATH=$PATH:.
5) cmake [cmake options] ../Dakota
* generate platform-specific Makefiles with cmake
* see NOTE below regarding specifying location of Boost
6) make [-j#]
* DAKOTA supports concurrent build processes
7) make install
* optional: requires write privilege in CMAKE_INSTALL_PREFIX
(see “Source Installation Options” below).

があるので、その通りにやるだけ(但し最後のmake install はルート権限でやる必要あるのと、ライブラリが新たに加わるので、sudo ldconfig も必要)。コンパイル時間も数10分で済むものでしたが、事前に準備しておくものがたくさん必要でした。

 

事前に必要なもの

  • gfortran
  • Boost
  • BLAS/LAPACK

gfortran

これは普通に

$ sudo apt-get install gfortran

または、パッケージマネージャからインストールするだけでOK

 

Boost

そもそも、Boost って何?の説明があって欲しかったのですが、そこは単に、

 

================================
Source Installation Dependencies
================================

To build DAKOTA with all possible packages, some platform-dependent
software dependencies exist. These include
* Boost (required)
* Message Passing Interface (MPI) library (optional)
* Basic Linear Algebra Subprograms (BLAS) (required)
* Linear Algebra PACKage (LAPACK) libraries (required)
* X11 and Motif graphics libraries (optional)
* Fortran90 compiler (optional)

と記してあるだけで、何のことやら? でしたが、そこはググって調査。

参考サイト より

1998年に、最初のC++言語の国際規格が誕生しました。その規格に採用されたライブラリがいわゆる「C++標準ライブラリ」です。しかしこのとき、さ らに強力な標準ライブラリを求めて、標準化委員会のメンバー達が新しいプロジェクトを立ち上げました。それが Boost です。

ダウンロードは、こちら

ビルド方法は、こちら

$ cd boost_1_52_0

$ ./bootstrap.sh

$ sudo ./b2 install -j2

 

上記実行すると、

…on 10600th target…
common.copy /usr/local/lib/libboost_wave.a
…failed updating 2 targets…
…skipped 6 targets…
…updated 10598 targets…

となって、途中一部error があったようですが、多分、大勢に影響はなさそうです。

BLAS/LAPACK

これらはAlgebla Package ということで、CAEをやっている人間にとって、少しは馴染みがあるものですねぇ。しかし、そのインストール方法は自力で調べるしかありませんで、ここで嵌りました。インストール方法を記したサイトは簡単に見つかりました(たとえば、こちらのサイト)が、スタティックライブラリの作り方が書いてあって、これだと後のDAKOTAをmakeする時に、訳のわからないエラーで止まってしまうのでした。

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libblas.a(sgemv.o): relocation R_X86_64_32 against `.rodata’ can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libblas.a: could not read symbols: Bad value
collect2: ld はステータス 1 で終了しました
make[2]: *** [packages/teuchos/src/libteuchos.so] エラー 1
make[1]: *** [packages/teuchos/src/CMakeFiles/teuchos.dir/all] エラー 2
make: *** [all] エラー 2

このエラーメッセージでググると、どうやらライブラリがlibblas.aでは駄目で、libblas.soにしなさいということらしく、それがダイナミックライブラリということ。これを作るには、コンパイルオプションを、-fPIC にせにゃならんということなんだが、Makefileのどこをどう変えるかが、素人にはたいへんな試行錯誤でした。

で、なんとか出来たんですが、Linux Mint13 の元々のシステム(/usr/lib)を眺めていたら、libblasも、liblapackも既に入っていたじゃありませんか!単に、名前がちょっと違っていた為、コンパイラが認識できていなかっただけ。シンボリックリンクを作成してすんなり通りました。。。という顛末。

$ sudo ln -s /usr/lib/libblas/libblas.so.3gf.0 /usr/lib/libblas.so

$ sudo ln -s /usr/lib/liblapack.so.3gf /usr/lib/liblapack.so

$ sudo ldconfig

以上、お粗末でした。

 

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください