Python GPU编程

2024-04-27 23:02:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用python开发一个项目,我想利用GPU进行一些计算。

乍一看,似乎有很多可用的工具;乍一看,我觉得我遗漏了一些东西。

铜斑蛇看起来棒极了,但还没有被释放。看起来,im仅限于编写低级CUDA或openCL内核;没有推力,没有cudpp。如果我想整理一些东西,我必须自己做。

我觉得这不太对。我真的错过了什么吗?或者这个GPU脚本还没有达到宣传的程度?

编辑:GPULIB似乎是我需要的。文档是基本的,python绑定只是顺便提到的,但是im现在正在申请下载链接。有没有人有这方面的经验,或链接到类似的免费学术使用GPU图书馆?重新编辑:好的,python绑定实际上是不存在的。

Edit2:所以我想我最好的办法是用C/CUDA编写一些东西,然后从python中调用它?


Tags: 工具项目编辑利用gpu链接内核整理
3条回答

我将在这里发布一些我在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所做工作的一大进步(引用的内核源代码),只是您的代码现在看起来更像是python。但是,它绝对不会在GPU上自动运行现有的NumPy代码。

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

  • gnumpy是一个关于CudaMat的文档很少的包装器。唯一支持的元素类型是float32,只实现了NumPy的一小部分。


我知道这条线索已经过时了,但我想我可以带来一些相关的信息来回答这个问题。

Continuum Analytics有一个包,其中包含为您解析CUDA计算的库。基本上,您需要使用decorator编写需要并行化(在函数中)的代码,并且需要导入库。因此,您不需要任何关于CUDA指令的知识。

信息可以在NVIDIA页面上找到

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

或者你可以直接进入“连续分析”页面

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

有30天的试用期和免费的学术许可证。

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

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

相关问题 更多 >