Python 开始使用PyOpenCL
我最近发现了GP-GPU(通用图形处理单元)的强大功能,并希望利用它在一台机器上执行“繁重”的科学和数学计算(否则需要大型CPU集群) 我知道有几个接口可以在GPU上操作,其中最突出的是CUDA和OpenCL。后者比CUDA更适合在大多数图形卡(NVIDIA、AMD、Intel)上运行,而不是仅在NVIDA卡上运行。在我的例子中,我有一个普通的Intel 4000 GPU,它似乎与OpenCL合作得很好 现在,我需要学习如何使用PyOpenCL进行操作,以便进一步使用它!所以问题来了: 如何开始使用PyOpenCL?先决条件是什么?我真的需要有Python和/或OpenCL方面的经验吗? 我的背景是fortran,事实上,我需要将冗长的fortran代码翻译并并行化为python(或pyopencl),主要处理解偏微分方程和对角化矩阵的问题 我读过两个相关的网站,但它们对新手(即傻瓜)并没有真正的帮助 我只是不知道该从什么开始。我并不渴望成为该领域的专家,只是想知道如何在pyopencl上并行处理简单的数学和线性代数Python 开始使用PyOpenCL,python,opencl,gpgpu,pyopencl,Python,Opencl,Gpgpu,Pyopencl,我最近发现了GP-GPU(通用图形处理单元)的强大功能,并希望利用它在一台机器上执行“繁重”的科学和数学计算(否则需要大型CPU集群) 我知道有几个接口可以在GPU上操作,其中最突出的是CUDA和OpenCL。后者比CUDA更适合在大多数图形卡(NVIDIA、AMD、Intel)上运行,而不是仅在NVIDA卡上运行。在我的例子中,我有一个普通的Intel 4000 GPU,它似乎与OpenCL合作得很好 现在,我需要学习如何使用PyOpenCL进行操作,以便进一步使用它!所以问题来了: 如何开始
欢迎任何建议和帮助 无论GPGPU计算采用何种语言,如Java、C/C++、Python,我建议您首先开始学习GPGPU计算和OpenCL的基础知识 您可以使用以下资源—所有这些资源都是面向C/C++的,但这应该让您对OpenCL、GPGPU硬件有足够的了解,从而开始学习 PyOpenCL特定的
这两本书都包含OpenCL 1.1实现,但它应该是您的良好起点。您似乎正在寻找学习PyOpenCL的最快、最有效的途径。您不需要在一开始就了解OpenCL(最难的部分),但在开始时了解Python会很有帮助 为了快速学习Python语法,我推荐Codecademy的Python曲目: 然后,Udacity并行编程课程是一个开始学习GPGPU的好地方(即使课程是在CUDA中教授的)。本课程将很快教授您GPU的基本概念。您将不需要NVIDIA GPU参与,因为所有课程评估都是在线完成的
在Udacity课程之后(或期间),我建议您阅读、运行和自定义PyOpenCL代码示例:作为GPU编程新手,我发现您提到的相关文章相当简单,尽管我发现示例代码在命令行中运行得非常完美,但在Eclipse和Anaconda中却没有。我认为这可能是因为anaconda的EclipsePyOpenCL与命令行版本不同,我还没有找到解决方法 学习python有大量的在线资源,包括免费电子书 应该是很好的开端。如果使用Eclipse,则应安装pydev。无论如何,安装Anaconda,因为这将为您节省很多麻烦 我估计需要一周左右的时间才能达到Python所需的熟练程度,只要你画几个简单的迷你项目。您还可能会发现,使用numpy和scipy以及ipython笔记本,您可能不需要深入研究GPU编程 这些链接可以帮助您避免GPU编程或至少延迟学习。请注意,在核心之间切换的成本意味着您没有为每个核心分配单独的工作量 一般来说,我觉得一次只学一件事效率更高,但乐趣更少 我希望这有帮助 您可以看到以下内容:)
我也对为pyopencl找到一个像样的文档非常感兴趣。如果你能告诉我最新情况,我将不胜感激。谢谢你的建议。我看这个讨论已经有好几年了。同时还有更好的吗?@Stéphane我怀疑这个建议仍然是最新的,因为OpenCL和并行编程的发展速度不是特别快。OpenCL是在物理硬件上运行C指令的一个子集,这使得它比在web浏览器上运行的Javascript更不流畅。