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

以上、お粗末でした。

 

windows 7 home premium oa asus download

I’ve been reviewin online more than seven hours today
for windows 7 home premium oa asus download & DAKOTA
Install on DEXCS2012 for OpenFOAM(R), yet I never found any interesting article like yours.
It is pretty worth enough for me. In my view, if all webmasters
and bloggers made good content as you did, the web will be much
more useful than ever before.

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

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