CentOS7 MKL PARDISO 並列 動作しない [電子工作・プログラミング]

そんなキーワードでググってしまいました。

先日、ずっとFedoraでやってきたメインマシンを、CentOS 7に入れ替えたのですが、そうしたらIntel MKL付属のPARDISOがOpenMP 並列計算時に正しい解を出してくれなくなりました。

PARDISOは疎行列のソルバーでAx = b の解xを計算してくれるはずのルーチンですが、並列数2以上でxの代わりにbを(ただしインデックスは1ずれた状態で)返してくる事態に見舞われました。並列数1では正常に解を出してくるので、当初はOpenMP回りがおかしいのかと思い色々試したところ、リンクするMKLのバージョンやStatic/Dynamicの別、icc/gccの別には関係なくCentOS7ではNGという結果でした。一方、WindowsやWindows上VM Wareのfedora21 では特に苦労することもなくOKでした。(Windowsで、なぜかDynamic Linkの時に限り、OpenMP Threadsは6なのに1並列でしか計算してくれないことはありましたが)

なんだろう。正確に比較するなら、VM Ware上のCentOS 7を見るべきですが、面倒くさくなったのでもう良いです。cuSolverSPの使い方とか調べようかなぁ。

6月18日20時54分
fartrip

AKBの総選挙の中継を横目に見ながら


※7月9日追記
VM Ware上のCentOS 7とかと比べた結果、OSの所為ではなくMKLのバージョンに由来するようでした。

計算失敗: compiler_and_libraries_2016.3.210 付属のMKL
計算成功: compiler_and_libraries_2016.1.150 付属のMKL、composer_xe_2013.5.192 付属のMKL

以前の、MKLのリンクするバージョン違いを意図した実験では、環境変数の更新ができておらず、結局最新版の何か(libiomp5.soとか、libmkl_**.soとか)を参照していたようです。

リリースノートとかよく読めば、何か対策などできるのでしょうか。。。


コメント(0)