前回、Calculix Windows版( bCOnverged)への計算時間測定機能追加方法を紹介してから
2年以上が経過した。最近になってCalculixのサイトを見てみたら、
本家:CCX_2.11
WIndows版:2.10
となっており、Windows版については、従来のbConvergedに加えて、
– Calculix for Win
– General Electric !!!
からも配布が開始されたようだ。Windows版3種類ともにちょろ試してみたところ、ソルバ
本体に関しての機能差はなさそうではと思われた。
ただし、Calculix for Winでは、ccx28p2~ccx211まで、4種類のバージョンが含まれている。
Windows版並列計算?
Calculixは、Spoolesソルバを使用した場合、マルチCPUでのメモリ共有並列計算が可能
となっている。
指定の方法は、OpenMPで使用する環境変数を設定するのみである。
dos> set OMP_NUM_THREADS=n
この設定を行って、ccxを実行すると
Ver.2.8
ソルバフェーズでは、全部4CPU使用してくれていたが、
Ver.2.10 bConverged版 と Calculix for WIn版 -- まあ、良いかな。
Ver.2.10 GEマルチスレッド版 – 結果出ず
Linuxバージョンのインストールと並列計算テスト
本家のサイトでは、ccxバイナリ版を配布しており、これをダウンロードするだけで
実行できそうなものだが、そうではないらしい。使用しているライブラリの関係などで
ソースコードから自分で make するのがベストらしいのだ。面倒だ、やってられない。
本家からバイナリccx_2.11.tar.bz2 をダウンロード、解凍するとこうなっている。
Calculix/ccx_2.11/src/ccx_2.11 – これが実行モジュール本体
ccx_2.11をLinux (今回はCenOS7.2)のパスの当たっている場所に保存する。
ライブラリを調べてみると
libgfortran.so.2 というライブラリがない。そこで、/usr/lib64を調べてみる。
もしこれらの情報も出なかったら、gccをインストールする必要がある。
#yum install gcc
非常に残念な状態だ。 so.1 と so.3 はあるのに、so.2がない。
「大は小を兼ねる」というから、so.3 を so.2 にシンボリックリンクして、ccxを実行してみる。
ダメだった。普通ならこれで諦めるか、コンパイルしようかと思うところだが、もう一度やってみよう。
so.1 を so.2 にシンボリックリンクする。
この状態で、ccxを再度実行してみると
動いた!!
OpenSuse10.3でも同じ方法で動かすことができた。ただし、2.11より前のバージョンでは効果なし。
次に並列計算を設定(WIndowsと同じ環境変数)して試してみた。
OMP_NUM_THREADS=8 指定なので、大体効いているが、肝心な箇所で効いていない。
オレンジの箇所は並列効果希薄と推測され、全体としての並列効果ほぼなし。原因不明。