Python GPU编程[已关闭]

bybem2ql  于 2023-05-16  发布在  Python
关注(0)|答案(7)|浏览(368)

**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答复。

我们不允许问题寻求书籍,工具,软件库等的建议。您可以编辑问题,以便可以用事实和引用来回答。
5年前关闭。
Improve this question
我目前正在使用Python进行一个项目,我想使用GPU进行一些计算。
乍一看,似乎有很多工具可用;再看一眼,我觉得我错过了什么。
Copperhead看起来很棒,但尚未发布。看起来我只限于写低级CUDA或openCL内核;没有推进就没有cudpp如果我想解决一些事情,我将不得不自己做。
我觉得那不太对。我真的错过了什么吗?或者说,这个GPU脚本还没有达到炒作的程度?
编辑:GPULIB看起来可能是我需要的。文档是基本的,python绑定只是顺便提到,但我现在申请下载链接。有人有这方面的经验吗?或者有类似的免费学术GPU库的链接吗?ReEdit:ok,python绑定实际上是不存在的。
Edit 2:所以我想我最好的选择是用C/CUDA写一些东西,然后从Python调用它?

eivgtgni

eivgtgni1#

PyCUDA提供了与CUDA非常好的集成,并且有几个帮助器接口,使编写CUDA代码比直接使用C API更容易。Here是Wiki中的一个例子,它可以在根本不需要任何C代码的情况下进行2D FFT。

fykwrbwg

fykwrbwg2#

我将在这里发布我在Reddit上看到的一些信息。对于那些不清楚不同包的作用以及如何将CUDA与Python连接的人来说,这将是非常有用的:
From:Reddit
在这篇文章中,有很多关于各种项目的目标是什么以及它们准备得如何的困惑。没有“NumPy的GPU后端”(SciPy的任何功能都更少)。有几种方法可以在Python和一些类似GPU阵列的对象中编写CUDA代码,这些对象支持NumPy的ndarray方法的子集(但不支持NumPy的其余部分,如linalgfft等)。

*PyCUDAPyOpenCL最接近。它们消除了启动GPU内核的大量管道(简化了阵列创建和内存传输,无需手动重新分配等)。然而,在大多数情况下,您仍然需要手动编写CUDA内核,它们只是碰巧在Python文件中作为三重引用的字符串。PyCUDA的GPUarray确实包含一些有限的类似NumPy的功能,所以如果你正在做一些非常简单的事情,你可能不需要自己编写任何内核。
*NumbaPro包含一个“cuda.jit”装饰器,允许您使用Python语法编写CUDA内核。它实际上并没有比PyCUDA做什么(引用内核源代码)有多大的进步,只是你的代码现在看起来更像Python。然而,它绝对不会自动在GPU上运行现有的NumPy代码。
*Theano让您可以构建符号表达式树,然后编译它们以在GPU上运行。它不是NumPy,只有NumPy功能的一小部分的等价物。
*gnumpy是CudaMat的一个文档很少的 Package 器。唯一支持的元素类型是float 32,并且只实现了NumPy的一小部分。

更新:

到现在(2023年),有更多/更好的选择(不是来自Reddit):

  • CUDA Python:CUDA运行时和驱动程序API的低级实现。它与PyCUDA非常相似,但与CUDA C++一样由Nvidia官方维护和支持。
  • Numba CUDA:与上面的NumbaPro相同,但现在是开源Numba代码生成框架的一部分。当你想写自己的内核时,这是理想的,但要用Python的方式而不是通常的C++方言。
  • CuPy:Preferred Networks,Inc.的NumPy/SciPy实现
  • cunumeric:Nvidia的用于HPC多节点、多GPU计算的NumPy实现。使用“Legate”抽象层。
  • RAPIDS:NVIDIA的加速数据科学库。包括加速的Pandas-like Dataframe (cuDF)等。
50few1ms

50few1ms3#

我知道这个帖子已经很老了,但我想我可以带来一些相关的信息来回答这个问题。
Continuum Analytics有一个包含库的软件包,可以为您解析CUDA计算。基本上,您需要使用装饰器对需要并行化(在函数中)的代码进行插装,并且您需要导入库。因此,您不需要任何有关CUDA指令的知识。
信息可在NVIDIA页面上找到
https://developer.nvidia.com/anaconda-accelerate
或者您可以直接转到Continuum Analytics的页面
https://store.continuum.io/cshop/anaconda/
有一个30天的试用期和一个免费的许可证的学者。
我广泛地使用它,并将我的代码加速了10到50倍。

vsnjm48y

vsnjm48y4#

Theano看起来可能是你要找的。据我所知,它非常有能力用GPU做一些繁重的数学运算,并且似乎得到了积极的维护。
祝你好运!

pexxcrt2

pexxcrt25#

查看此页面以获取与Anaconda https://www.anaconda.com/blog/developer-blog/open-sourcing-anaconda-accelerate/一起分发的开源库
今天,我们发布了两个新的Numba子项目,分别称为pyculib和pyculib_sorting,其中包含NVIDIA GPU库Python Package 器和Accelerate的排序函数。这些 Package 器与NumPy阵列和Numba GPU设备阵列一起使用,以提供对加速函数的访问:cuBLAS:线性代数cuFFT:快速傅立叶变换cuSparse:稀疏矩阵运算cuRand:随机数生成(仅主机功能)排序:从CUB和ModernGPU移植的快速排序算法未来,Numba项目将接管pyculib和pyculib_sorting,并在新的Numba版本发布时根据需要发布更新。这些项目是BSD许可的,就像Numba一样。

bjp0bcyl

bjp0bcyl7#

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

相关问题