我想从MATLAB级别使用MUMPS软件包。 MUMPS使用LAPACK和BLAS软件包。我的主要问题是我获得了细分违规错误。 MUMPS软件包主要使用32位整数。为了避免出现违反细分的错误,我必须使用外部BLAS软件包。在MATLAB中实现的BLAS使用64位整数。
要检查MATLAB正在加载哪些软件包,我正在使用:
export BLAS_VERBOSITY=1
export LAPACK_VERBOSITY=1
我试图通过从控制台级别应用环境变量BLAS_VERSION来强制MATLAB使用外部BLAS:
export BLAS_VERSION="/net/people/plgzgoryk/luke/packages/lapack-3.8.0/librefblas.so"
export LAPACK_VERSION="/net/people/plgzgoryk/luke/packages/lapack-3.8.0/liblapack.so"
或在MATLAB级别:
setenv('BLAS_VERSION','/net/people/plgzgoryk/luke/packages/lapack-3.8.0/librefblas.so')
setenv('LAPACK_VERSION','/net/people/plgzgoryk/luke/packages/lapack-3.8.0/liblapack.so')
但是当我尝试通过两种方式加载BLAS时,会出现错误“无效的ELF标头”:
cpu_id: x86 Family 6 Model 63 Stepping 2, GenuineIntel
BLAS: trying environment...
BLAS: loading /net/people/plgzgoryk/luke/packages/alapack/lapack-3.8.0/librefblas.so
BLAS: unloading libraries
BLAS loading error:
/net/people/plgzgoryk/luke/packages/alapack/lapack-3.8.0/librefblas.so: invalid ELF header
此外,我试图使用环境变量LD_PRELOAD,但失败了。我们可以在这里找到有关此问题的信息:
https://listes.ens-lyon.fr/sympa/arc/mumps-users/2014-10/msg00005.html
在这里
Use external BLAS and LAPACK libraries in a MATLAB mex file
当我尝试使用LD_PRELOAD时:
export LD_PRELOAD=/net/people/plgzgoryk/luke/packages/lapack-3.8.0/librefblas.so
我在MATLAB中遇到错误:
ERROR: ld.so: object '/net/people/plgzgoryk/luke/packages/lapack-3.8.0/librefblas.so' from LD_PRELOAD cannot be preloaded: ignored.
另一个环境变量LD_LIBRARY_PATH也无效:
export LD_LIBRARY_PATH="/net/people/plgzgoryk/luke/packages/lapack-3.8.0/librefblas.so"
使用此变量后,没有任何反应。我的意思是MATLAB使用了自己的BLAS:
cpu_id: x86 Family 6 Model 63 Stepping 2, GenuineIntel
BLAS: trying spec file...
BLAS: loading mkl.so
BLAS: loaded mkl.so@0x2b213b28c160
BLAS: mkl.so is not a compatibility layer.
BLAS: loading mklcompat.so
BLAS: loaded mklcompat.so@0x2b213b28ed70
BLAS: initializing compatibility layer mklcompat.so
你能帮我吗?我究竟做错了什么?感谢您的帮助。我正在使用具有64位Centos 7,Matlab 2018b和GCC版本4.8.5-28的计算机。