Loading
Trilinos由来の汎用BLAS/LAPACKを、選択したBLAS/LAPACKの後ろにリンクする
Close #926 (closed)
概要
MPI ビルドの fistr1 で、BLAS/LAPACK が MKL ではなく参照実装(libblas.so.3、liblapack.so.3)に結びついていたのを直します。Trilinos が持ち込む汎用の libblas、liblapack が、リンク行でこのビルドが選んだ BLAS/LAPACK より前に並んでいたことが原因です。
Trilinos の依存一覧から汎用の libblas、liblapack を抜き出し、選んだ BLAS/LAPACK の後ろにもう一度並べます。CMake は繰り返されたライブラリの最後をリンク行に残すので、汎用のものが MKL より後ろへ移り、実行ファイルの直接の依存に記録されなくなります。
Trilinos の依存全体を後ろへ移す方式は、Windows 向けパッケージ(静的リンク)がリンクエラーになりました。一覧から汎用のものを除くだけの方式は、依存に libblas.so.3 が残り効きませんでした。
fork の pipeline で、MUMPS、ML、fistr1 本体の dgemm などが MKL に結びつくことと、benchmark が9件とも critical 0 になることを確認しました。 https://gitlab.com/chikasuiro/FrontISTR/-/pipelines/2911186207 (結びつき先の出力を足したコミットを載せて実行したもの)
変更内容
| コミット | メッセージ | 要約 |
|---|---|---|
| 75103ef1 | Link the generic BLAS/LAPACK of Trilinos behind the selected ones | Trilinos 由来の汎用 BLAS/LAPACK を、選んだ BLAS/LAPACK の後ろに並べ直す |