【问题标题】:Override BLAS with LD_LIBRARY_PATH用 LD_LIBRARY_PATH 覆盖 BLAS
【发布时间】: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,这对于我的用例来说已经足够了。如果你回答我会接受。

标签: linux openblas


【解决方案1】:

用 LD_LIBRARY_PATH 覆盖 BLAS

在搜索路径中的“Intel MKL Blas”之前设置openblas

常见的方法就是在编译的时候在LD_LIBRARY_PATH中先设置“首选”:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/openblas:$LD_LIBRARY_PATH && [other command]

【讨论】:

    猜你喜欢
    • 2014-04-03
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2016-12-10
    • 2018-10-07
    • 2011-06-11
    • 2012-01-28
    • 2012-02-16
    相关资源
    最近更新 更多