该theano安装文档状态,即theano将作为默认使用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) 我在教程中看到了两个版本,但我无法找到它们的优点和缺点.哪一个是正确的?
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,到第二个示例以使其正确.
偶然发现这个论坛帖子,在cpu上比使用OpenCL的gpu更快点产品,我再次提醒,有些实例,看起来像是为OpenCL*制作的,但是在使用它们的地方,OpenCL没有提供我们有收获.即我也有一个使用pyopencl代码的kmeans实现,它比简单的python代码快几倍,但仍然比kmeans的scipy函数快几倍.
那么你如何决定何时使用OpenCL?
或者它是这些三角形的情况之一,你只能(/必须)选择三个角中的两个来使其工作?
Run Code Online (Sandbox Code Playgroud)problem size /\ / \ / \ / \ /________\ GPU/CPU optimization
我知道,我对标题和问题使用了一些过于大胆的语言.如果我能想到更合适的措辞,我会改变它.
谢谢.
*简单的矩阵运算,如点积,kmeans或矩阵乘法
我知道,我可能会问很多,但任何人都知道Haskell的一些不错的编程示例/库.
对于"编程入门"课程,我想表明Haskell不仅仅是一种"用于排序数字的小脚本语言".
我已经找到了一个令人印象深刻的Quake克隆(真实世界的Haskell编程),但是对于学生来说太复杂了.
你有好主意吗?也许是图形或与Web服务交互的东西?适合第一年cs学生的东西.
谢谢你的输入!
[更新]
或许你知道一个"有趣"的图书馆?
情况
我有一个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 …
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) 所以,我玩弄multiprocessing.Pool和Numpy,但似乎我错过了一些重要的一点.为什么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基准测试流程仍然没有变化.pool版本仍然较慢,我可以看到htop,只使用了一个核心,也产生了几个进程. …
我想要衡量一下我的内核存档的峰值性能.
假设我有一台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....)怎么样?我也必须考虑它们吗?instructions计数器,但我无法弄清楚,数字意味着什么.姐妹问题:如何计算CUDA内核的实现带宽
我在我的机器上安装了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)
undefined symbol: _gfortran_st_write_done')我用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)