我最近发现了GP-GPU(通用图形处理单元)的强大功能,并希望利用它在一台机器上执行“繁重”的科学和数学计算(否则需要大型CPU群集)。 / p>
我知道有几种接口可以在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上并行化简单的数学和线性代数。
非常欢迎任何建议和帮助!
答案 0 :(得分:8)
您似乎正在寻找学习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
答案 1 :(得分:5)
无论采用GPGPU计算的语言如Java,C / C ++,Python,我都建议您先开始使用GPGPU计算和OpenCL的基础知识。
您可以使用以下资源,所有这些都是面向C / C ++的,但是您应该充分了解OpenCL,GPGPU硬件,以便开始使用。
PyOpenCL特定
这两本书都包含OpenCL 1.1实现,但它应该是你的良好起点。
答案 2 :(得分: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
一般来说,我发现一次只学习一件事,效率更高,如果不那么有趣。
我希望这会有所帮助。
答案 3 :(得分:0)