在Java項目中,我使用了matrix-toolkits-java(MTJ)來實現高效的矩陣乘法。這依賴於netlib-java,而這又依賴於機器上安裝的BLAS和LAPACK的優化實現。它專門查找/usr/lib64/libblas.so.3
和/usr/lib64/liblapack.so.3
來查找這些庫。在CentOS/Fedora上安裝OpenBLAS
當通過百勝安裝blas
和lapack
,我們得到符號鏈接/usr/lib64/libblas.so.3
和/usr/lib64/liblapack.so.3
從通過百勝安裝了參考blas
和lapack
指向.so文件。
現在我們想要使用比參考的更快的實現,在我的例子中是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安裝覆蓋。然後我的軟件又悲傷又緩慢。
所以我的問題是,如何在CentOS/Fedora上安裝OpenBLAS以這種方式運行ldconfig
不會破壞它?我無法刪除blas
和lapack
程序包,因爲主機的其他客戶端可能依賴它。相反,我會以某種方式使操作系統明白,OpenBLAS是替代blas
和lapack
的替代品。
如果別人依賴blas和lapack包,他們最不可能還會依賴libblas.so.3指向blas的實現嗎? – Stefan