Python GPU编程

我目前正在python项目中工作,我想利用GPU进行一些计算。

乍一看,似乎有很多工具可用; 乍一看,我觉得我想失去一些东西。

Copperhead看起来很棒,但还没有发布。 这似乎只限于编写低级CUDA或openCL内核; 没有推力,没有cudpp。 如果编号喜欢有东西sorting,即时将不得不自己做。

这对我来说似乎不太合适。 我确实错过了什么? 或者,这个GPU脚本不太适合炒作吗?

编辑:GPULIB似乎可能是我所需要的。 文档是最基本的,python绑定只是在传递,但现在正在申请下载链接。 任何人都有这方面的经验,或链接到类似的免费学术使用的GPU库? 重新编辑:好吧,python绑定事实上是不存在的。

Edit2:所以我想我最好的select是用C / CUDA编写一些东西,并从python中调用它。

PyCUDA提供了非常好的与CUDA的集成,并且有几个帮助器接口可以使得编写CUDA代码比直接的C api更容易。 这里有一个维基百科的例子,它不需要任何C代码就可以进行2D FFT。

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


来自: Reddit

在这个主题中,有很多困惑,关于各种项目的目标是什么,以及他们做得如何。 没有“用于NumPy的GPU后端”(对于SciPy的任何function来说都less得多)。 有几种方法可以在Python中编写CUDA代码,以及一些支持NumPy的ndarray方法(但不是NumPy的其余部分,比如linalg,fft等)子类的类GPU对象。

  • PyCUDAPyOpenCL最接近。 他们消除了围绕启动GPU内核的许多pipe道(简化arrays创build和内存传输,不需要手动释放等)。 但是,大多数情况下,您仍然坚持手动编写CUDA内核,它们恰好在您的Python文件中作为三重引号string。 PyCUDA的GPUarray确实包含了一些有限的类似NumPy的function,所以如果你正在做一些非常简单的事情,你可能会离开,而无需自己编写任何内核。

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

  • Theano让你构build符号expression式树,然后编译它们在GPU上运行。 这不是NumPy,只有NumPy的一小部分function的等价物。

  • gnumpy是CudaMat周围的一个简单的文件包装。 唯一支持的元素types是float32,只有NumPy的一小部分被实现。


我知道这个线程是旧的,但我想我可以带来一些相关的信息,回答所问的问题。

Continuum Analytics拥有一个包含库的软件包,可为您解决CUDA计算问题。 基本上,你需要使用装饰器来处理需要并行化(在一个函数中)的代码,并且需要导入一个库。 因此,您不需要任何关于CUDA指令的知识。

信息可以在NVIDIA网页上find

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

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

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

有30天的试用期和学者的免费执照。

我广泛使用它,并加速我的代码10到50次之间。

Theano看起来可能是你要找的东西。 据我所知,这是非常有能力做一些沉重的math与GPU的提升,似乎积极维护。

祝你好运!

我可以推荐scikits.cuda 。 但为此,您需要下载CULA完整版(免费为学生)。 另一个是CUV 。 如果你正在寻找更好的东西,并准备为此付出代价,你也可以看看arrays火灾。现在我正在使用scikits,相当满意。

查看此页面,了解与Anaconda分发的开源库https://www.anaconda.com/blog/developer-blog/open-sourcing-anaconda-accelerate/

“今天,我们发布了两个新的Numba子项目,名为pyculib和pyculib_sorting,其中包含NVIDIA GPU库Python包装和加速sortingfunction。这些包装与NumPyarrays和Numba GPU设备arrays配合使用,以提供加速function:cuBLAS:线性代数cuFFT:快速傅里叶变换cuSparse:稀疏matrix运算cuRand:随机数生成(仅宿主函数)sorting:从CUB和ModernGPU移植的快速sortingalgorithm前进,Numba项目将取代pyculib和pyculib_sorting的pipe理,释放当新的Numba发布时,需要更新这些项目,这些项目是BSD许可的,就像Numba“