2017-07-07 5 views
3

Javaプロジェクトでは効率的な行列乗算のためにmatrix-toolkits-java(MTJ)を使用しています。これは、netlib-javaに依存しています。これは、マシンにインストールされているBLASとLAPACKの最適化された実装に依存しています。これらのライブラリを見つけるには、具体的には/usr/lib64/libblas.so.3/usr/lib64/liblapack.so.3を探します。CentOS/FedoraでのOpenBLASのインストール

ヤム経由blaslapackをインストールし、我々はヤム経由でインストール参照blaslapackからの.soファイルを指すシンボリックリンク/usr/lib64/libblas.so.3/usr/lib64/liblapack.so.3を取得します。

ここでは、私のケースではOpenBLASのリファレンスよりも高速な実装を使用します。私がそれをコンパイルするか、Yum経由でインストールするかは関係ありませんが、私は/usr/lib64/libopenblas-r0.2.18.soになります。

今、インターネット上の任意のガイドに従って、私はこのようなもので終わる、OpenBLAS実装へのシンボリックリンクで参照実装へのシンボリックリンクを交換することになっています:

libblas.so.3 -> libopenblas-r0.2.18.so 
liblapack.so.3 -> libopenblas-r0.2.18.so 

さて、私が行うことができますそれ!私はln、またはalternativesでそれをすることができます。そして、もし私がそうすれば、私のコードは高速OpenBLASを使ってうれしく思います。

しかし、ldconfigを実行すると、私の素晴らしいシンボリックリンクがなくなり、参照BLASとLAPACKのインストールによって上書きされます。そして私のソフトウェアは悲しくて、再び遅くなります。

だから私の質問はldconfigを実行すると、それを破壊しないような方法でCentOSの/ FedoraのにOpenBLASをインストールする方法、のですか? blaslapackパッケージを削除することはできません。ホストの他のクライアントがそのパッケージに依存している可能性があります。むしろ、OpenBLASはblaslapackの代替品であるとOSに理解してもらうだろう。

+0

他の人がblasとlapackパッケージに依存しているのであれば、blas実装を指し示すlibblas.so.3に頼っている可能性はほとんどありませんか? – Stefan

答えて

0

This articleは廉経由openblas-compatをインストール提案のリンクを更新した後openblasへのシンボリックリンクを復元するために、カスタムスクリプトを作成する必要があることから、

。それは私の問題を解決します。デフォルトのblasパッケージをインストールした後、私のソフトウェアはまだOpenBLASを使用していました。

0

この動作は、リファレンス実装を削除せずに避けることができるものではないと思います。 手動でld.so.cacheを再構築する必要がある場合は、ldconfig -Xを実行してリンクの更新を回避できます。離れてあなたが最も可能性のldconfigは

関連する問題