小编Pie*_*reE的帖子

如何在Ubuntu中使用OpenBLAS代替Atlas numpy?

我找了一个简单的方法来安装/编译Numpy与OpenBLAS,但没有找到一个简单的答案.我所看到的所有文档都为我这样不习惯编译软件的人带来了太多的知识.Ubuntu中有两个与OpenBLAS相关的软件包:libopenblas-baselibopenblas-dev.一旦安装完毕,我该怎么做才能再次安装Numpy?谢谢!

请注意,安装这些OpenBLAS软件包时,Numpy不再工作:无法导入:ImportError:/usr/lib/liblapack.so.3gf:undefined symbol:ATL_chemv.安装Theano及其Ubuntu 的网站说明时也会出现问题.

这已经在这里注意到了.

python installation ubuntu numpy blas

14
推荐指数
2
解决办法
1万
查看次数

如何在Python中加速矩阵乘法?

我正在开发一个小型神经网络,其参数需要大量优化,因此需要大量的处理时间.我已经编写了我的脚本,cProfile并且需要80%的处理器时间是NumPy dot函数,其余的是函数的矩阵求逆numpy.linalg.solve.我当前版本的numpy使用blas,或者它看起来像,因为它numpy.core._dotblas.dot显示为占用总处理时间的80%的函数.

因为它是我的神经网络的核心,因为我必须经常运行它,所以任何小的速度增益都可以节省我很多时间,而不是重复的参数优化.

更精确:矩阵乘法在矩阵上,其形状最小为100*100到500*500.我有一台12核的计算机,到目前为止使用它们并行运行不同的神经网络参数优化,但矩阵乘法可能并行完成?

感谢您的时间!

回答:

我花了几天测试和安装卸载库...这是我测试的结果:默认情况下,我的Ubuntu(12.04)版本和Numpy的存储库安装版本,BLAS库是ATLAS库.我做了一些测试,反映了我感兴趣的计算中的特定改进,因此这些结果不能被解释为最终答案.这些计算涉及55000迭代循环中的矩阵乘法(点积),具有500*500和1000*1000矩阵.我使用带有12核的Xeon X5675 @ 3.07GHZ的HP Z800工作站.所有结果(百分比)是所描述的条件和参考之间的比较,这里是打包的ATLAS库.

  • Scipy.sparse module:我不知道如果我设置正确但是稀疏度为10%,使用此模块从使用OpenBLAS和MKL的1500*1500矩阵开始变得有用.如果您有关于如何正确使用它们的建议,我感兴趣!
  • 使用OpenBlas,500*500矩阵的速度提高了33%,而1000*1000的速度提高了160%.但是使用OpenBLAS,scipy.sparse模块的性能并不是更好,但实际上更糟糕.
  • 这里的大赢家是MKL图书馆.使用原始ATLAS库中的1000*1000矩阵,加速度可达230%!对于500*500矩阵,加速度更为适中(100%),但仍然非常好.此外,通过使用OpenMP进行编译,矩阵乘法可以在我的12个处理器上运行,这里它比使用MKL库的一个处理器快两倍.但这是浪费处理能力,使用多处理模块并行运行脚本/矩阵乘法更有效.

python parallel-processing optimization numpy blas

8
推荐指数
1
解决办法
5329
查看次数

从 Python 中的另一个函数中断函数执行

我有一个函数a执行一些任务,另一个函数b是对某些事件的回调。每当发生事件时,b都会调用function并且我想让它能够中断 function 的执行a。这两个函数都在同一个类中声明。

Functiona不应该调用 function b。功能b是完全独立的,它是对来自ROS:机器人操作系统的“用户面部检测”等外部事件的回调。

我需要的基本上是像 Ctrl+C 这样的东西,它可以从 Python 中调用,它只会中止目标函数而不是整个程序。

这可以在 Python 中完成吗?

python interrupt

8
推荐指数
2
解决办法
2万
查看次数

特征矩阵广播操作

我有一个MatrixXf变量和一个VectorXf变量.我想使用我的矩阵上的Vector执行行划分.可以这样做吗?

#include <iostream>
#include "Eigen/Dense"
using namespace std;
using namespace Eigen;

int main() {
    MatrixXf mat(3, 2);
    mat << 1, 2,
           3, 4,
           5, 6;
    VectorXf vec(2);
    vec << 2, 3;
    mat = mat.rowwise() / vec;
    cout << mat << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期望得到一个有价值的矩阵[0.5,0.667; 1.5,1.333; 2.5,2].

非常感谢你!

c++ eigen

5
推荐指数
1
解决办法
1423
查看次数

如何在Linux中将MKL库永久链接到Numpy?

我使用英特尔的MKL库构建了Numpy(对我来说这是一个艰难的过程,我花了一整天!).Numpy需要使用LD_LIBRARY_PATH环境变量链接到MKL库,或者至少这是我的方式...所以我使用.bashrc中的export来保存路径,当我启动一个新的控制台并运行python时, Numpy正确加载库.

问题是它不适用于我使用Pydev来开发我的程序的Eclipse.我仍然可以在Eclipse的首选项中添加LD_LIBRARY_PATH但是当我尝试安装Scipy时问题变得真实.Scipy的安装脚本需要导入Numpy,即使正确设置了LD_LIBRARY_PATH,我仍然无法导入无法导入的MKL库:

$ sudo python setup.py install
Traceback (most recent call last):
  File "setup.py", line 208, in <module>
    setup_package()
  File "setup.py", line 145, in setup_package
    from numpy.distutils.core import setup
  File "/usr/local/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module>
    import add_newdocs
  File "/usr/local/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module>
    from numpy.lib import add_newdoc
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 4, in <module>
    from type_check import *
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 8, in <module>
    import numpy.core.numeric as _nx
  File "/usr/local/lib/python2.7/dist-packages/numpy/core/__init__.py", line 5, in <module>
    import multiarray
ImportError: libimf.so: cannot open …
Run Code Online (Sandbox Code Playgroud)

python linux numpy shared-libraries intel-mkl

3
推荐指数
1
解决办法
4333
查看次数

如何在没有 ipcluster 命令的情况下停止 IPython 集群

我不开始我的IPython集群的ipcluster命令,但与个人的命令ipcontroller,并ipengine因为我用的几台机器在网络上。使用ipcluster命令启动集群时,停止集群非常简单:

ipcluster stop

但是,在单独使用各个命令时,我无法找到该过程。

谢谢你的帮助

ipython-parallel

3
推荐指数
1
解决办法
1242
查看次数