手动安装

sudo rm -rf /usr/local/lib/python2.7/site-packages/numpy/
sudo rm -rf /usr/local/lib/python2.7/site-packages/numpy-*.egg*
sudo rm -rf /usr/local/bin/f2py pip安装
 sudo rm -rf /usr/local/lib/python2.7/dist-packages/numpy/
sudo rm -rf /usr/local/lib/python2.7/dist-packages/numpy-*.egg*
sudo rm -rf /usr/local/bin/f2py

export BLAS=~/.local/lib/libopenblas.a
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.local/lib/
30down voteaccepted

I just compiled numpy inside a virtualenv with OpenBLAS integration, and it seems to be working ok. This was my process:

  1. Compile OpenBlas:

    git clone git://github.com/xianyi/OpenBLAS
    cd OpenBLAS && make FC=gfortran
    sudo make PREFIX=/opt/OpenBLAS install
    sudo ldconfig
  2. Grab the numpy source code:

    git clone https://github.com/numpy/numpy
    cd numpy
  3. Copy site.cfg.example to site.cfg and edit the copy:

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

    Uncomment these lines:

    ....
    [openblas]
    libraries = openblas
    library_dirs = /opt/OpenBLAS/lib
    include_dirs = /opt/OpenBLAS/include
    ....
  4. Check configuration, build, install (optionally in a virutalenv)

    python setup.py config

    The output should look something like this:

    ...
    openblas_info:
    FOUND:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/opt/OpenBLAS/lib']
    language = f77 FOUND:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/opt/OpenBLAS/lib']
    language = f77
    ...

    Then just build and install:

    python setup.py build && python setup.py install
  5. Optional: you can use this script to test performance for different thread counts.

    OMP_NUM_THREADS=1 python build/test_numpy.py
    
    FAST BLAS
    version: 1.8.0.dev-27690e3
    maxint: 9223372036854775807 dot: 0.100896406174 sec OMP_NUM_THREADS=8 python test_numpy.py FAST BLAS
    version: 1.8.0.dev-27690e3
    maxint: 9223372036854775807 dot: 0.0660264015198 sec

There seems to be a noticeable improvement in performance for higher thread counts. However, I haven't tested this very systematically, and it's likely that for smaller matrices the additional overhead would outweigh the performance benefit from a higher thread count.

answered Jan 18 '13 at 2:50
ali_m
7,0352055
 
1  
I apply what you did bu tending with foollowing error at your test script /linalg/lapack_lite.so: undefined symbol: zgelsd_ –  Erogol Jan 30 at 17:47 
1  
@Erogol Could you check that lapack_lite.so is correctly linked against the libopenblas.so you just built? You can call ldd /<path-to-site-packages>/numpy/linalg/lapack_lite.so - if you installed OpenBLAS with PREFIX=/usr/local you should see something like libopenblas.so.0 => /usr/local/lib/libopenblas.so.0 in the output. –  ali_m Jan 30 at 18:01 
1  
I have following line even I do strictly what you typed above answer. libopenblas.so.0 => /usr/lib/libopenblas.so.0 (0x00007f77e08fc000) –  Erogol Jan 30 at 18:06 
    
It sounds like numpy has not been built correctly. I would suggest you uninstall the broken copy of numpy, do a python setup.py clean and python setup.py build and look for any error messages during the compilation. –  ali_m Jan 30 at 18:14 
    
Also, you should probably call sudo ldconfig after installing OpenBLAS if you haven't already (I've added this line to my answer) –  ali_m Jan 30 at 18:21

OMP_NUM_THREADS=7 python test.py

#!/usr/bin/env python
import numpy
import sys
import timeit

try:
import numpy.core._dotblas
print 'FAST BLAS'
except ImportError:
print 'slow blas'

print "version:", numpy.__version__
print "maxint:", sys.maxint
print

x = numpy.random.random((1000,1000))

setup = "import numpy; x = numpy.random.random((1000,1000))"
count = 5

t = timeit.Timer("numpy.dot(x, x.T)", setup=setup)
print "dot:", t.timeit(count)/count, "sec"

numpy delete的更多相关文章

  1. numpy delete方法

    import numpy as np lines = np.loadtxt(r'./test.txt',delimiter=',',dtype=int) print(lines) lines_copy ...

  2. python numpy sum函数用法

    numpy.sum numpy.sum(a, axis=None, dtype=None, out=None, keepdims=False)[source] Sum of array element ...

  3. NumPy 学习笔记(三)

    NumPy 数组操作: 1.修改数组形状 a.numpy.reshape(arr, newshape, order='C') 在不改变数据的条件下修改形状 b.numpy.ndarray.flat 是 ...

  4. Numpy学习笔记(二)

    (1)NumPy - 切片和索引 l  ndarray对象中的元素遵循基于零的索引. 有三种可用的索引方法类型: 字段访问,基本切片和高级索引. l  基本切片 Python 中基本切片概念到 n 维 ...

  5. Numpy 数组操作

    Numpy 数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resh ...

  6. Python常用库之一:Numpy

    Numpy支持大量的维度数组和矩阵运算,对数组运算提供了大量的数学函数库! Numpy比Python列表更具优势,其中一个优势便是速度.在对大型数组执行操作时,Numpy的速度比Python列表的速度 ...

  7. 1,Python常用库之一:Numpy

    Numpy支持大量的维度数组和矩阵运算,对数组运算提供了大量的数学函数库! Numpy比Python列表更具优势,其中一个优势便是速度.在对大型数组执行操作时,Numpy的速度比Python列表的速度 ...

  8. Python之Numpy详细教程

    NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前 ...

  9. numpy tricks(二)—— 删除多维数组的行或列

    numpy.delete numpy 下的多维数组,如果要删除其中的某些行,或某些列,不可以用置空的方式,进行设置: A[1, :] = None, ⇒ 会将 A 中的第一行数据全部置为 Nan 1. ...

随机推荐

  1. 用 MoveTowards实现多点移动

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveCube ...

  2. C#构造函数、私有构造函数、静态构造函数与构造函数执行顺序

    默认构造函数,如果没有为类指定任何构造函数,编译器会自动为类创建一个无参构造函数,用以初始化类的字段:如果为类编写了构造函数,那么编译器就不会再自动生成无参构造函数了.ps.C#不允许用户为结构定义无 ...

  3. 解决wine中文字体方块或乱码

    从Windows使用字体 如果有一个安装了Windows的分区, 可以通过链接它们来使用其字体. 例如, Windows的C:\盘被挂载在/windows: # ln -s /windows/Wind ...

  4. CentOS 7 通过SQLmap进行SQL注入

    安装SQLmap: IP:192.168.94.11 渗透测试演练系统DVWA: IP:192.168.94.111 通过SQLmap检测SQL注入漏洞 : 1.安装SQLmap漏洞查看工具 2.安装 ...

  5. 第三篇——Struts2的动态方法调用

    Struts2动态方法调用 默认方式:默认执行方法中的execute方法,若指定类中没有该方法,默认返回success: method方式:执行method属性中定义的方法,没有该方法,页面报错: 通 ...

  6. hdu5029 Relief grain

    题目链接 树剖+线段树 将区间修改转化为单点修改,因为如果按DFS序进行修改,那么一定会对DFS序更大的点造成影响 #include<iostream> #include<vecto ...

  7. KVM 通过virsh console连入虚拟机

    新安装一台虚拟机后,是无法通过virsh console 命令连入虚拟机中的,这时我们需要开启虚拟机的console功能. 一.添加ttyS0的许可,允许root登陆 [root@localhost ...

  8. BDD数据集(mask_rcnn)1

    mask_rcnn中ballon的例子 classsification VS semantic segmention VS object detection VS instance segmentio ...

  9. wm_concat函数oracle 11g返回clob

    用wm_concat连接拼接字符串,测试环境是10g,一切正常 到了生产环境是11g,点开直接报错了 wm_concat函数在oracle 10g返回的是字符串,到了11g返回的是clob 解决办法: ...

  10. JavaScript-DOM(3)

    事件处理 事件类型 <body> <!--方式1:直接带html代码中嵌入js代码--> <button onclick="console.log('事件1') ...