PyOpenCL入门

2024-04-20 06:39:18 发布

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

我最近发现了GP-GPU(通用图形处理单元)的强大功能,并希望利用它在一台机器上执行“繁重”的科学和数学计算(否则需要大的CPU集群)。

我知道在一个GPU上有几个操作接口,其中最突出的是CUDA和OpenCL。后者比CUDA有优势,可以在大多数显卡(NVIDIA、AMD、Intel)上运行,而不是仅在NVIDA卡上运行。在我的例子中,我有一个普通的Intel 4000 GPU,它似乎与OpenCL合作得很好。

现在,我需要学习如何操作PyOpenCL,以使它更进一步!所以问题来了:

如何开始使用PyOpenCL?先决条件是什么?我真的需要在Python和/或OpenCL方面有经验吗?

我的背景是fortran,事实上,我需要将冗长的fortran代码翻译成python(或pyopencl)并并行化,python主要处理pde和对角化矩阵。

我读过两个相关的网站http://enja.org/2011/02/22/adventures-in-pyopencl-part-1-getting-started-with-python/http://documen.tician.de/pyopencl/,但它们对新手(如傻瓜)并没有真正的帮助。

我只是不知道该从什么开始。我不想成为这个领域的专家,只是想知道如何在pyopencl上并行化简单的数学和线性代数。

欢迎任何建议和帮助!


Tags: 功能pyopencl机器http图形利用gpu科学
3条回答

你似乎在寻找学习PyOpenCL最快、最有效的途径。一开始不需要了解OpenCL(最难的部分),但是在开始时了解Python会很有帮助。

为了快速学习Python语法,我推荐Codecademy的Python轨迹:http://www.codecademy.com/tracks/python

然后,Udacity并行编程课程是一个很好的地方开始与GPGPU(即使该课程是在CUDA教)。https://www.udacity.com/course/cs344本课程将很快教你基本的GPGPU概念。你将不需要一个英伟达GPU参与,因为所有的课程评估都是在线完成的。

在Udacity课程之后(或期间),我建议您阅读、运行和自定义PyOpenCL代码示例:https://github.com/inducer/pyopencl/tree/master/examples

作为GPU编程的新手,我发现您提到的相关文章相当简单,尽管我发现示例代码完全从命令行运行,但不是在带有Anaconda的Eclipse中。我认为这可能是因为anaconda中的Eclipse pyopencl与命令行版本不同,我还没有找到解决这个问题的方法。

学习python有大量的在线资源,包括免费电子书。

https://wiki.python.org/moin/BeginnersGuidehttp://codecondo.com/10-ways-to-learn-python/

应该是个好的开始。如果您使用Eclipse,那么应该安装pydev。在任何情况下,安装Anacondahttps://docs.continuum.io/anaconda/install,因为这将为您节省很多麻烦。

我估计一周左右就能达到你在Python中所需要的熟练程度,只要你做一些简单的小项目。您还可能发现,使用numpy和scipy,可能还有ipython笔记本,您可能不需要深入研究GPU编程

这些链接可以帮助您避免GPU编程,或者至少延迟学习。请注意,在核心之间切换的成本意味着您没有为每个核心分配单独的工作量

http://blog.dominodatalab.com/simple-parallelization/https://pythonhosted.org/joblib/parallel.html

一般来说,我觉得一次只学一件事更有效率,如果不那么有趣的话。

我希望这能有帮助。

不管GPGPU计算采用的语言,如java、C++、Python,我建议您先从GPGPU计算和OpenCL的基础开始。

<>你可以使用以下所有的资源,所有的都是面向C/C++的,但是你应该提供足够的OpenCL,GPGPU硬件知识,让你开始。

  1. AMD OpenCL University Tool kit

  2. Hetergeneous Computing with OpenCL Book 2nd Edition

  3. NVIDIA OpenCL pages is another Excellent resorce

  4. Streamcomputing.eu has nice openCL starter articles.

  5. Intel OpenCL SDK tutorial

PyOpenCL特定的

  1. OpenCL in Action: How to Accelerate Graphics and Computation 有一章是关于PyOpenCL的
  2. OpenCL Programming Guide有PyOpenCL章

这两本书都包含OpenCL 1.1实现,但它应该是您的良好起点。

相关问题 更多 >