如果您遇到包含“gfortran”的错误,如下所示:
ImportError: (‘/home/Nick/.theano/compiledir_Linux-2.6.35-31-generic-x86_64-with-Ubuntu-10.10-maverick–2.6.6/tmpIhWJaI/0c99c52c82f7ddc775109a06ca04b360.so: undefined symbol: _gfortran_st_write_done’
嗨,我正在按照给定的步骤操作。问题可能是 NumPy 与不同的 blas 链接,然后是当前可用的 blas(可能是 ATLAS)。有 2 个可能的修复方法:
Uninstall ATLAS and install OpenBLAS.
Use the Theano flag “blas.ldflags=-lblas -lgfortran”
1) 更好,因为 OpenBLAS 比 ATLAS 更快,而且 NumPy 可能已经与它链接。因此您不需要对 Theano 文件或 Theano 配置进行任何其他更改。
但我不知道如何卸载这个 ATLAS 包。我试过了
sudo apt-get remove libatlas
但它没有起作用。你能告诉我如何正式删除它们吗?问候
答案1
如果您想删除ATLAS开发包,它们实际上被称为libatlas-dev
和libatlas-base-dev
。
但是,无需卸载这些软件包即可使用 OpenBLAS:该update-alternatives
机制将为您处理所有事情,当您安装时,会自动为 OpenBLAS 版本的 libblas 分配更高的优先级,例如,如果只安装了 ATLAS 开发包,您应该会看到
$ update-alternatives --get-selections | grep libblas
libblas.so auto /usr/lib/atlas-base/atlas/libblas.so
libblas.so.3 auto /usr/lib/atlas-base/atlas/libblas.so.3
然后使用安装 OpenBLAS 开发包
$ sudo apt-get install libopenblas-dev
再检查一下你会看到
$ update-alternatives --get-selections | grep libblas
libblas.so auto /usr/lib/openblas-base/libblas.so
libblas.so.3 auto /usr/lib/openblas-base/libblas.so.3
您应该能够使用sudo update-alternatives --config libblas.so
并按照屏幕上的说明在它们之间切换。