我目前正在研究python中的一个项目,我想利用GPU进行一些计算.
乍一看似乎有很多可用的工具; 乍一看,我觉得我错过了什么.
Copperhead看起来很棒,但还没有被释放.似乎我只限于编写低级CUDA或openCL内核; 没有推力,没有cudpp.如果我喜欢有东西排序,我将不得不自己做.
这对我来说似乎不对.我确实错过了什么吗?或者这个GPU脚本还没有完全实现炒作呢?
编辑:GPULIB似乎可能是我需要的.文档是基本的,python绑定只是顺便提一下,但我现在申请下载链接.任何人都有这方面的经验,或链接到类似的免费学术用途的GPU库?ReEdit:好的,python绑定实际上是不存在的.
编辑2:所以我想我最好的选择是用C/CUDA写一些东西并从python中调用它?
PyCUDA提供了与CUDA的非常好的集成,并且有几个辅助接口,使得编写CUDA代码比在直接的C api中更容易. 以下是来自Wiki的示例,其执行2D FFT而根本不需要任何C代码.
我将在这里发布一些我在reddit上阅读的信息.对于那些没有清楚了解不同软件包的功能以及如何将cuda与Python连接起来的人来说,这将非常有用:
来自: Reddit
这个帖子中有很多关于各种项目的目标和准备程度的混淆.没有"NumPy的GPU后端"(更不用说任何SciPy的功能).有写的Python的内部CUDA代码的一些方式和支持的与NumPy的ndarray方法子集的一些GPU阵列状物体(但与NumPy的不是休息,像linalg,FFT等.)
PyCUDA和PyOpenCL最接近.它们消除了许多围绕启动GPU内核的管道(简化的阵列创建和内存传输,无需手动释放等等).但是,在大多数情况下,您仍然无法手动编写CUDA内核,它们恰好位于Python文件中作为三引号字符串.PyCUDA的GPUarray确实包含了一些有限的NumPy功能,所以如果你做的很简单,你可能会在没有自己编写任何内核的情况下逃脱.
NumbaPro包含一个"cuda.jit"装饰器,它允许您使用Python语法编写CUDA内核.它实际上并不比PyCUDA所做的更多(引用内核源代码),只是你的代码现在看起来更像Pythonic.但是,它肯定不会在GPU上自动运行现有的NumPy代码.
Theano允许您构建符号表达式树,然后编译它们以在GPU上运行.它不是NumPy,只有NumPy功能的一小部分.
gnumpy是一个关于CudaMat的文档包装.唯一受支持的元素类型是float32,并且只实现了NumPy的一小部分.
我知道这个帖子已经过时了,但我想我可以提供一些相关的信息来回答问题.
Continuum Analytics有一个软件包,其中包含可以为您解决CUDA计算的库.基本上,您需要使用装饰器来检测需要并行化(在函数内)的代码,并且需要导入库.因此,您不需要任何有关CUDA指令的知识.
可以在NVIDIA页面上找到相关信息
https://developer.nvidia.com/anaconda-accelerate
或者您可以直接进入Continuum Analytics的页面
https://store.continuum.io/cshop/anaconda/
有30天的试用期和学术自由许可证.
我广泛使用它并将代码加速10到50倍.
Theano看起来可能是你正在寻找的东西.根据我的理解,它能够通过GPU进行一些重大的数学提升,并且似乎得到了积极的维护.
祝好运!