36

我想这个问题不言自明。我有兴趣做一些严肃的计算,但我不是一名程序员。我可以将足够多的 python 串在一起来完成我想要的。但是我可以在 python 中编写一个程序并让 GPU 使用 CUDA 执行它吗?还是我必须混合使用 python 和 C?

Klockner(sp)“pyCUDA”网页上的示例混合了 python 和 C,所以我不确定答案是什么。

如果有人想加入关于 Opencl 的意见,请随意。几周前我听说了这个 CUDA 业务,不知道你可以像这样使用你的视频卡。

4

8 回答 8

20

你应该看看CUDAmatTheano。两者都是编写在 GPU 上执行的代码的方法,而无需真正了解 GPU 编程。

于 2010-06-20T00:53:32.770 回答
18

我相信,使用 PyCUDA,您的计算内核将始终必须编写为“CUDA C 代码”。PyCUDA 负责许多其他繁琐的簿记工作,但不会从 Python 代码构建计算 CUDA 内核。

于 2010-06-01T04:42:08.550 回答
8

pyopencl为 PyCUDA提供了一个有趣的替代方案。它被描述为 PyCUDA 的“姐妹项目”。它是 OpenCL API 的完整包装器。

据我了解,OpenCL 具有在 Nvidia 以外的 GPU 上运行的优势。

于 2010-06-01T07:40:02.277 回答
5

已经有了很好的答案,但另一个选择是Clyther。通过将 Python 的一个子集编译到 OpenCL 内核中,它可以让您编写 OpenCL 程序,甚至无需使用 C。

于 2010-06-27T23:55:51.370 回答
4

一个有前途的库是Copperhead替代链接),您只需要装饰您希望由 GPU 运行的功能(然后您可以选择加入/退出它以查看 cpu 或 gpu 之间的最佳功能) )

于 2011-06-27T00:29:47.643 回答
1

有一组很好的、基本的数学结构,其中计算内核已经编写好,可以通过 pyCUDA 的cumath 模块访问。如果您想做更多涉及或特定/自定义的东西,您将不得不在内核定义中编写一点 C,但是 pyCUDA 的好处是它会为您完成繁重的 C 提升;它在后端进行了大量的元编程,因此您不必担心严重的 C 编程,只需担心小部分。给出的示例之一是用于计算点积的 Map/Reduce 内核:

dot_krnl = ReductionKernel(np.float32, neutral="0", reduce_expr="a+b", map_expr="x[i]*y[i]", arguments="float *x, float *y")

每个参数中的小代码片段都是 C 行,但它实际上是为您编写程序。这ReductionKernel是 map/reducish 类型函数的自定义内核类型,但有不同的类型。官方 pyCUDA文档的示例部分 更详细。

祝你好运!

于 2011-02-25T23:16:08.813 回答
0

Scikits CUDA 包可能是一个更好的选择,前提是它不需要任何低级知识或 C 代码来进行任何可以表示为 numpy 数组操作的操作。

于 2014-04-04T18:29:52.563 回答
0

我想知道同样的事情并进行了一些搜索。我发现下面链接的文章似乎回答了您的问题。但是,您在 2014 年问过这个问题,而 Nvidia 的文章没有日期。

https://developer.nvidia.com/how-to-cuda-python

该视频通过设置、初始示例以及非常重要的分析。但是,我不知道您是否可以实现所有常用的通用计算模式。我认为你可以,因为据我所知,NumPy 没有任何限制。

于 2016-08-29T06:24:27.007 回答