小编Fra*_*ter的帖子

如何确保numpy BLAS库可用作可动态加载的库?

theano安装文档状态,即theano将作为默认使用BLAS库从numpy的,如果"BLAS库可为动态加载库".这似乎不适用于我的机器,请参阅错误消息.

  • 如果numpy BLAS库可以动态加载,我怎么知道呢?
  • 如果它们不可动态加载,我如何重新编译numpy BLAS库?

如果您需要更多信息,请说明!

错误信息

We did not found a dynamic library into the library_dir of the library we use for blas. If you use ATLAS, make sure to compile it with dynamics library. /usr/bin/ld: cannot find -lblas

附录

theano除其他事项外库的需求与NumPy和BLAS库.如果你sudo apt-get install python-numpy python-scipy在Ubuntu下安装它,我认为numpy带有BLAS .

这是文件列表 /usr/lib64/python2.6/dist-packages/scipy/lib/blas

cblas.so  info.py   __init__.py   scons_support.py   setup.py     
fblas.so  info.pyc  __init__.pyc  scons_support.pyc  setup.pyc  
setupscons.py  test
setupscons.pyc
Run Code Online (Sandbox Code Playgroud)

这是输出distutils.__config__.show()如下

blas_info:
    libraries = ['blas']
    library_dirs = ['/usr/lib64'] …
Run Code Online (Sandbox Code Playgroud)

linux numpy shared-libraries blas atlas

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

使用clCreateBuffer + CL_MEM_COPY_HOST_PTR与clCreateBuffer + clEnqueueWriteBuffer创建缓冲区对象有什么区别?

我在教程中看到了两个版本,但我无法找到它们的优点和缺点.哪一个是正确的?

cl_mem input = clCreateBuffer(context,CL_MEM_READ_ONLY,sizeof(float) * DATA_SIZE, NULL, NULL);
clEnqueueWriteBuffer(command_queue, input, CL_TRUE, 0, sizeof(float) * DATA_SIZE, inputdata, 0, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

cl_mem input = clCreateBuffer(context,CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, ,sizeof(float) * DATA_SIZE, inputdata, NULL);
Run Code Online (Sandbox Code Playgroud)

谢谢.

[更新]

我添加CL_MEM_COPY_HOST_PTR,到第二个示例以使其正确.

memory-management opencl

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

何时使用OpenCL?

偶然发现这个论坛帖子,在cpu上比使用OpenCL的gpu更快点产品,我再次提醒,有些实例,看起来像是为OpenCL*制作的,但是在使用它们的地方,OpenCL没有提供我们有收获.即我也有一个使用pyopencl代码的kmeans实现,它比简单的python代码快几倍,但仍然比kmeans的scipy函数快几倍.

那么你如何决定何时使用OpenCL?

  • 你需要什么显卡?显卡必须有多少"比cpu好".Quadro FX 580与i7 860相比足够吗?
  • 这个问题有多大?你需要数百万次乘法来获得一些东西还是几百个?
  • 为了使OpenCL值得,有多少优化甚至是"简单"算法(如kmeans或dot产品)是必要的?

或者它是这些三角形的情况之一,你只能(/必须)选择三个角中的两个来使其工作?

    problem size
        /\
       /  \
      /    \
     /      \
    /________\
GPU/CPU   optimization
Run Code Online (Sandbox Code Playgroud)

我知道,我对标题和问题使用了一些过于大胆的语言.如果我能想到更合适的措辞,我会改变它.

谢谢.

*简单的矩阵运算,如点积,kmeans或矩阵乘法

opencl

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

Haskell中的小巧简单的现实生活编程示例?

我知道,我可能会问很多,但任何人都知道Haskell的一些不错的编程示例/库.

对于"编程入门"课程,我想表明Haskell不仅仅是一种"用于排序数字的小脚本语言".

我已经找到了一个令人印象深刻的Quake克隆(真实世界的Haskell编程),但是对于学生来说太复杂了.

你有好主意吗?也许是图形或与Web服务交互的东西?适合第一年cs学生的东西.

谢谢你的输入!

[更新]

或许你知道一个"有趣"的图书馆?

haskell functional-programming

15
推荐指数
2
解决办法
9866
查看次数

CUDA运行时API错误38:未检测到支持CUDA的设备

情况

我有一个2 gpu服务器(Ubuntu 12.04),我用一台GTX 670切换了特斯拉C1060.比我在4.2上安装了CUDA 5.0.然后我编译了所有execpt for simpleMPI的例子而没有错误.但是当我运行时,./devicequery我收到以下错误消息:

foo@bar-serv2:~/NVIDIA_CUDA-5.0_Samples/bin/linux/release$ ./deviceQuery
./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Run Code Online (Sandbox Code Playgroud)

我试过了什么

为了解决这个问题,我尝试了所有CUDA功能设备推荐的思路,但无济于事:

  • /dev/nvidia* 是,并且权限是666(crw-rw-rw-)和所有者root:root

     foo@bar-serv2:/dev$ ls -l nvidia*
     crw-rw-rw- 1 root root 195,   0 Oct 24 18:51 nvidia0
     crw-rw-rw- 1 root root 195,   1 Oct 24 18:51 nvidia1
     crw-rw-rw- 1 root root 195, 255 Oct 24 18:50 nvidiactl
    
    Run Code Online (Sandbox Code Playgroud)
  • 我尝试用sudo执行代码

  • CUDA 5.0同时安装驱动程序和库

PS这里是lspci | grep -i …

cuda nvidia

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

如何获取numpy数组的线性索引(sub2ind)

Matlab提供的函数sub2ind"返回行和列下标的线性索引等价物......对于矩阵......".

我需要这个sub2ind函数或类似的东西,但我没有找到任何类似的Python或Numpy函数.我该如何获得此功能?

这是matlab文档中的一个示例(与上面相同):

Example 1

This example converts the subscripts (2, 1, 2) for three-dimensional array A 
to a single linear index. Start by creating a 3-by-4-by-2 array A:

rng(0,'twister');   % Initialize random number generator.
A = rand(3, 4, 2)

A(:,:,1) =
    0.8147    0.9134    0.2785    0.9649
    0.9058    0.6324    0.5469    0.1576
    0.1270    0.0975    0.9575    0.9706
A(:,:,2) =
    0.9572    0.1419    0.7922    0.0357
    0.4854    0.4218    0.9595    0.8491
    0.8003    0.9157    0.6557    0.9340

Find the linear index corresponding to …
Run Code Online (Sandbox Code Playgroud)

matlab numpy

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

Multiprocessing.Pool使Numpy矩阵乘法更慢

所以,我玩弄multiprocessing.PoolNumpy,但似乎我错过了一些重要的一点.为什么pool版本慢得多?我查看了htop,我可以看到创建了几个进程,但它们共享一个CPU,最多可达100%.

$ cat test_multi.py 
import numpy as np
from timeit import timeit
from multiprocessing import Pool


def mmul(matrix):
    for i in range(100):
        matrix = matrix * matrix
    return matrix

if __name__ == '__main__':
    matrices = []
    for i in range(4):
        matrices.append(np.random.random_integers(100, size=(1000, 1000)))

    pool = Pool(8)
    print timeit(lambda: map(mmul, matrices), number=20)
    print timeit(lambda: pool.map(mmul, matrices), number=20)

$ python test_multi.py 
16.0265390873
19.097837925
Run Code Online (Sandbox Code Playgroud)

[更新]

  • 改为timeit基准测试流程
  • init池,包含许多核心
  • 改变计算,以便有更多的计算和更少的内存传输(我希望)

仍然没有变化.pool版本仍然较慢,我可以看到htop,只使用了一个核心,也产生了几个进程. …

python numpy pool multiprocessing

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

如何计算内核的Gflops

我想要衡量一下我的内核存档的峰值性能.

假设我有一台NVIDIA Tesla C1060,它的峰值GFLOPS为622.08(〜= 240Cores*1300MHz*2).现在在我的内核中我计算每个线程16000翻牌(4000 x(2减法,1乘法和1 sqrt)).因此,当我有1,000,000个线程时,我会想出16GFLOP.由于内核耗时0.1秒,我将存档160GFLOPS,这将是峰值性能的四分之一.现在我的问题:

  • 这种方法是否正确?
  • 比较(if(a>b) then....)怎么样?我也必须考虑它们吗?
  • 我可以使用CUDA分析器获得更简单,更准确的结果吗?我尝试了instructions计数器,但我无法弄清楚,数字意味着什么.

姐妹问题:如何计算CUDA内核的实现带宽

profiling cuda

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

由于Ubuntu下的NumPy Fortran混音,Theano失败了

我在我的机器上安装了Theano,但是nosetests打破了Numpy/Fortran相关的错误消息.对我来说,看起来像Numpy编译的是与Theano不同的Fortran版本.我已经重新安装了Theano(sudo pip uninstall theano+ sudo pip install --upgrade --no-deps theano)和Numpy/Scipy(apt-get install --reinstall python-numpy python-scipy),但这没有帮助.

你会推荐什么步骤?

完整的错误消息:

ImportError: ('/home/Nick/.theano/compiledir_Linux-2.6.35-31-generic-x86_64-with-Ubuntu-10.10-maverick--2.6.6/tmpIhWJaI/0c99c52c82f7ddc775109a06ca04b360.so: undefined symbol: _gfortran_st_write_done'
Run Code Online (Sandbox Code Playgroud)

我的研究:

有关错误的安装SciPy/BuildingGeneral页面undefined symbol: _gfortran_st_write_done':

如果您看到错误消息

ImportError: /usr/lib/atlas/libblas.so.3gf: undefined symbol: _gfortran_st_write_done

在构建SciPy时,这意味着NumPy在构建期间选择了错误的Fortran编译器(例如ifort).

使用以下方法重新编译NumPy:

python setup.py build --fcompiler=gnu95

或以适当者为准(见python setup.py build --help-fcompiler).

但:

Nick@some-serv2:/usr/local/lib/python2.6/dist-packages/numpy$ python setup.py build --help-fcompiler
This is the wrong setup.py file to run
Run Code Online (Sandbox Code Playgroud)

二手软件版本:

  • scipy 0.10.1(scipy.test()有效)
  • NumPy 1.6.2(numpy.test()有效)
  • theano 0.5.0(几次测试失败undefined symbol: _gfortran_st_write_done')
  • python …

numpy gfortran scipy theano

13
推荐指数
2
解决办法
3148
查看次数

Python Image Library:AttributeError:'NoneType'对象没有属性XXX

我用PIL打开了一张照片,但是当我试图split()分割频道时,我得到了以下错误: AttributeError: 'NoneType' object has no attribute 'bands'

import Image
img = Image.open('IMG_0007.jpg')

img.split()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/blum/<ipython console> in <module>()

/usr/lib/python2.6/dist-packages/PIL/Image.pyc in split(self)
   1495         "Split image into bands"
   1496 
-> 1497         if self.im.bands == 1:
   1498             ims = [self.copy()]
   1499         else:

AttributeError: 'NoneType' object has no attribute 'bands'
Run Code Online (Sandbox Code Playgroud)

python-imaging-library

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