当前位置:  开发笔记 > 编程语言 > 正文

Python GPU编程

如何解决《PythonGPU编程》经验,为你挑选了4个好方法。

我目前正在研究python中的一个项目,我想利用GPU进行一些计算.

乍一看似乎有很多可用的工具; 乍一看,我觉得我错过了什么.

Copperhead看起来很棒,但还没有被释放.似乎我只限于编写低级CUDA或openCL内核; 没有推力,没有cudpp.如果我喜欢有东西排序,我将不得不自己做.

这对我来说似乎不对.我确实错过了什么吗?或者这个GPU脚本还没有完全实现炒作呢?

编辑:GPULIB似乎可能是我需要的.文档是基本的,python绑定只是顺便提一下,但我现在申请下载链接.任何人都有这方面的经验,或链接到类似的免费学术用途的GPU库?ReEdit:好的,python绑定实际上是不存在的.

编辑2:所以我想我最好的选择是用C/CUDA写一些东西并从python中调用它?



1> Joseph Lisee..:

PyCUDA提供了与CUDA的非常好的集成,并且有几个辅助接口,使得编写CUDA代码比在直接的C api中更容易. 以下是来自Wiki的示例,其执行2D FFT而根本不需要任何C代码.


@Eelco Hoogendoorn:PyCUDA过去的基本问题是它是基于CUDA驱动程序API构建的,而大多数算法库(CUBLAS,CUFFT,CUDPP,CUSPARSE)都是为CUDA运行时API编写的.直到最近,CUDA中的两个API之间没有官方互操作性.这已得到修复,基于PyCUDA的这些库的绑定正在慢慢出现.我知道今天对你没有帮助,但它解释了为什么事情就是现在......

2> Ramon Martin..:

我将在这里发布一些我在reddit上阅读的信息.对于那些没有清楚了解不同软件包的功能以及如何将cuda与Python连接起来的人来说,这将非常有用:


来自: Reddit

这个帖子中有很多关于各种项目的目标和准备程度的混淆.没有"NumPy的GPU后端"(更不用说任何SciPy的功能).有写的Python的内部CUDA代码的一些方式和支持的与NumPy的ndarray方法子集的一些GPU阵列状物体(但与NumPy的不是休息,像linalg,FFT等.)

PyCUDAPyOpenCL最接近.它们消除了许多围绕启动GPU内核的管道(简化的阵列创建和内存传输,无需手动释放等等).但是,在大多数情况下,您仍然无法手动编写CUDA内核,它们恰好位于Python文件中作为三引号字符串.PyCUDA的GPUarray确实包含了一些有限的NumPy功能,所以如果你做的很简单,你可能会在没有自己编写任何内核的情况下逃脱.

NumbaPro包含一个"cuda.jit"装饰器,它允许您使用Python语法编写CUDA内核.它实际上并不比PyCUDA所做的更多(引用内核源代码),只是你的代码现在看起来更像Pythonic.但是,它肯定不会在GPU上自动运行现有的NumPy代码.

Theano允许您构建符号表达式树,然后编译它们以在GPU上运行.它不是NumPy,只有NumPy功能的一小部分.

gnumpy是一个关于CudaMat的文档包装.唯一受支持的元素类型是float32,并且只实现了NumPy的一小部分.




3> Bogdan..:

我知道这个帖子已经过时了,但我想我可以提供一些相关的信息来回答问题.

Continuum Analytics有一个软件包,其中包含可以为您解决CUDA计算的库.基本上,您需要使用装饰器来检测需要并行化(在函数内)的代码,并且需要导入库.因此,您不需要任何有关CUDA指令的知识.

可以在NVIDIA页面上找到相关信息

https://developer.nvidia.com/anaconda-accelerate

或者您可以直接进入Continuum Analytics的页面

https://store.continuum.io/cshop/anaconda/

有30天的试用期和学术自由许可证.

我广泛使用它并将代码加速10到50倍.



4> 小智..:

Theano看起来可能是你正在寻找的东西.根据我的理解,它能够通过GPU进行一些重大的数学提升,并且似乎得到了积极的维护.

祝好运!

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有