使用OpenBLAS集成编译numpy

使用OpenBLAS集成编译numpy,第1张

使用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

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5645630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存