栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-使用OpenBLAS集成编译numpy

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-使用OpenBLAS集成编译numpy

我只是

numpy
virtualenv
带有
OpenBLAS
集成的a内编译,看来工作正常。

这是我的过程:

编译

OpenBLAS

$ git clone https://github.com/xianyi/OpenBLAS$ cd OpenBLAS && make FC=gfortran$ sudo make PREFIX=/opt/OpenBLAS install

如果你没有管理员权限,则可以将其设置PREFIX=为具有写权限的目录(只需相应地修改下面的相应步骤)。

确保包含目录的目录libopenblas.so位于共享库搜索路径中。

要在本地执行此操作,你可以编辑~/.bashrc文件以包含该行

export LD_LIBRARY_PATH=/opt/OpenBLAS/lib:$LD_LIBRARY_PATH

LD_LIBRARY_PATH
当启动新的终端会话时,环境变量将被更新(用于
$ source ~/.bashrc
强制在同一会话中进行更新)。

适用于多个用户的另一个选项是

.conf
/etc/ld.so.conf.d/
包含的行中创建一个文件
/opt/OpenBLAS/lib
,例如:

$ sudo sh -c "echo '/opt/OpenBLAS/lib' > /etc/ld.so.conf.d/openblas.conf"

完成任一选项后,运行

$ sudo ldconfig

抓取numpy源代码:

$ git clone https://github.com/numpy/numpy$ cd numpy

复制

site.cfg.example
site.cfg
并编辑副本:

$ cp site.cfg.example site.cfg$ nano site.cfg

取消注释以下行:

....[openblas]libraries = openblaslibrary_dirs = /opt/OpenBLAS/libinclude_dirs = /opt/OpenBLAS/include....

检查配置,构建和安装(可以选择在

virtualenv

$ python setup.py config

输出应如下所示:

...openblas_info:  FOUND:    libraries = ['openblas', 'openblas']    library_dirs = ['/opt/OpenBLAS/lib']    language = c    define_macros = [('HAVE_CBLAS', None)]  FOUND:    libraries = ['openblas', 'openblas']    library_dirs = ['/opt/OpenBLAS/lib']    language = c    define_macros = [('HAVE_CBLAS', None)]...

与安装

pip
是最好用
python setup.py install
的,因为
pip
将跟踪包的元数据,让你轻松卸载或将来升级
numpy
的。

$ pip install .
  1. 可选:你可以使用此脚本来测试不同线程数的性能。
$ OMP_NUM_THREADS=1 python build/test_numpy.pyversion: 1.10.0.dev0+8e026a2maxint:  9223372036854775807BLAS info: * libraries ['openblas', 'openblas'] * library_dirs ['/opt/OpenBLAS/lib'] * define_macros [('HAVE_CBLAS', None)] * language cdot: 0.099796795845 sec$ OMP_NUM_THREADS=8 python build/test_numpy.pyversion: 1.10.0.dev0+8e026a2maxint:  9223372036854775807BLAS info: * libraries ['openblas', 'openblas'] * library_dirs ['/opt/OpenBLAS/lib'] * define_macros [('HAVE_CBLAS', None)] * language cdot: 0.0439578056335 sec

对于更高的线程数,性能似乎有了明显的提高。但是,我尚未对此进行非常系统的测试,对于较小的矩阵,额外的开销可能会超过线程数增加带来的性能好处。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号