Solaris上的Python NumPy,BLAS慢还是未链接?
在我的Solaris系统上,矩阵与矩阵的相乘速度非常慢(运行在sparc服务器上),而我的OSX系统(在一台笔记本电脑上)则快了100倍!这是在处理3000x3000的密集随机双精度矩阵时的表现。
这可能是因为Solaris系统没有使用blas库,但numpy脚本却报告说找到了这些库。
$python3 -c "import numpy.distutils.system_info as f; d = f.get_info('blas',0); print(d); d = f.get_info('lapack',0); print(d)"
{'libraries': ['sunperf'], 'library_dirs': ['/home/$myname/local/archive/SolarisStudio12.2-solaris-sparc-tar-ML/solstudio12.2/lib'], 'language': 'f77'}
{'libraries': ['sunmath'], 'library_dirs': ['/home/$myname/local/archive/SolarisStudio12.2-solaris-sparc-tar-ML/solstudio12.2/lib'],'language': 'f77'}
在Solaris系统上,以下导入失败,但在OSX上成功:
import numpy.core._dotblas
Solaris系统上没有可用的ATLAS库。我本来以为这不会对计算效率造成这么大的影响。
有没有其他测试的建议?distutils.system_info的结果是否一定能说明安装的情况?我尝试了numpy.alterdot()命令,但似乎没有任何效果。
还有更多说明:
我基本上按照http://www.scipy.org/Installing_SciPy/Solaris上的设置步骤进行的,除了我的site.cfg看起来是这样的:
[DEFAULT]
library_dirs = $PATH_TO_MY_SOLARIS_DIR/SolarisStudio12.2-solaris-sparc-tar-ML/solstudio12.2/lib
[blas]
blas_libs = sunperf
[lapack]
lapack_libs = sunmath
1 个回答
2
根据mathtick在评论中的回答,这个问题的原因是dotblas
需要ATLAS
。仅仅有Fortran编译的blas是不够的(这是在numpy/core/setup.py
中的一条评论提到的)