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

使用OpenBLAS集成编译numpy

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

使用OpenBLAS集成编译numpy

我只是

numpy
在一个
virtualenv
带有
OpenBLAS
集成的内部进行编译,看来工作正常。

这是我的过程:

  1. 编译
    OpenBLAS
    $ git clone https://github.com/xianyi/OpenBLAS

    $ cd OpenBLAS && make FC=gfortran
    $ sudo make PREFIX=/opt/OpenBLAS install

如果您没有管理员权限,则可以将其设置

PREFIX=
为具有写权限的目录(只需相应地修改下面的相应步骤)。

  1. 确保包含目录

    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
  1. 抓取

    numpy
    源代码:

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

    $ cd numpy

  2. 复制

    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....
  1. 检查配置,构建,安装(可选在
    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.pyinstall
的,因为
pip
将跟踪包的元数据,让你轻松卸载或将来升级numpy的。

    $ pip install .
  1. 可选:您可以使用此脚本来测试不同线程数的性能。

    $ OMP_NUM_THREADS=1 python build/test_numpy.py

    version: 1.10.0.dev0+8e026a2
    maxint: 9223372036854775807

    BLAS info:
    * libraries [‘openblas’, ‘openblas’]
    * library_dirs [‘/opt/OpenBLAS/lib’]
    * define_macros [(‘HAVE_CBLAS’, None)]
    * language c

    dot: 0.099796795845 sec

    $ OMP_NUM_THREADS=8 python build/test_numpy.py

    version: 1.10.0.dev0+8e026a2
    maxint: 9223372036854775807

    BLAS info:
    * libraries [‘openblas’, ‘openblas’]
    * library_dirs [‘/opt/OpenBLAS/lib’]
    * define_macros [(‘HAVE_CBLAS’, None)]
    * language c

    dot: 0.0439578056335 sec

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



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

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

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