繁体   English   中英

PyOpenCL入门

[英]Getting started with PyOpenCL

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

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

现在,我需要学习如何使用PyOpenCL来进一步操作! 所以这里有一个问题:

我怎样才能开始使用PyOpenCL? 有什么先决条件? 我真的需要有Python和/或OpenCL的经验吗?

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

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

我只是不知道该怎么做。 我不想成为该领域的专家,只是为了了解如何在pyopencl上并行化简单的数学和线性代数。

任何建议和帮助都非常欢迎!

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

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

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

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

无论GPGPU计算的采用语言如Java,C / C ++,Python,我都建议您首先开始使用GPGPU计算和OpenCL的基础知识。

您可以使用以下资源,所有这些都是面向C / C ++的,但是这应该让您充分了解OpenCL,GPGPU硬件以帮助您入门。

  1. AMD OpenCL大学工具包

  2. 使用OpenCL Book第2版进行异构计算

  3. NVIDIA OpenCL页面是另一个优秀的resorce

  4. Streamcomputing.eu有很好的openCL入门文章。

  5. 英特尔OpenCL SDK教程

PyOpenCL具体

  1. OpenCL in Action:如何加速图形和计算有一章关于PyOpenCL
  2. OpenCL编程指南有PyOpenCL章节

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

作为GPU编程的新手,我发现您提到的相关文章相当简单,但我发现示例代码完全从命令行运行,但在Eclipse中没有使用Anaconda。 我想这可能是因为来自anaconda的Eclipse pyopencl与命令行版本不同,我还没有弄清楚如何解决这个问题。

对于学习python,网上有大量资源,包括免费电子书。

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

应该是好的先发者。 如果您使用Eclipse,则应安装pydev。 在任何情况下安装Anaconda https://docs.continuum.io/anaconda/install,因为这将为您节省很多麻烦。

我估计需要一周左右的时间才能达到Python所需的熟练程度,只要你完成一些简单的迷你项目即可。 您可能还会发现使用numpy和scipy以及可能的ipython笔记本,您可能不需要深入研究GPU编程

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

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

一般来说,我发现它更有效,如果不那么有趣,一次只学习一件事。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM