【发布时间】:2020-01-31 09:10:25
【问题描述】:
我通常使用sudo update-alternatives ... 在 blas 版本之间切换。但是,我需要让它在没有 sudo 的情况下工作。我尝试了几个选项,但似乎都没有。
我有以下 FORTRAN 代码来测试我是否已成功切换库
PROGRAM BLASTEST
IMPLICIT NONE
CALL MKL_Set_Num_Threads(1)
CALL openblas_set_num_threads(1)
END PROGRAM BLASTEST
我已将 intel MKL 设置为首选替代方案,因此当我使用以下命令进行编译时,会导致找不到 openblas_set_num_threads 的错误。
gfortran -o test test.f -lblas
我尝试了以下方法让它与 openblas 链接,但它一直与 MKL 链接:
创建一个从 ~/.local/alternatives/libblas.so.3-x86_64-linux-gnu 到 /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3 的符号链接并添加~/.local/LD_LIBRARY_PATH 的替代品
方法与之前相同,但也将其添加到 LIBRARY_PATH
使用以下命令编译
gfortran -o test test.f -L/usr/lib/x86_64-linux-gnu/openblas/libblas.so.3 -lblas
任何帮助将不胜感激
【问题讨论】:
-
常用的方法就是在编译的时候在LD_LIBRARY_PATH中先设置“首选”:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/openblas:$LD_LIBRARY_PATH && [other command] -
这似乎可以解决加载时间问题。我仍然无法使用 openblas 编译它,但是按照您的方式,我至少可以在运行时使用 openblas,这对于我的用例来说已经足够了。如果你回答我会接受。