我最近发现了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上并行化简单的数学和线性代数。
欢迎任何建议和帮助!
你似乎在寻找学习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硬件知识,让你开始。AMD OpenCL University Tool kit
Hetergeneous Computing with OpenCL Book 2nd Edition
NVIDIA OpenCL pages is another Excellent resorce
Streamcomputing.eu has nice openCL starter articles.
Intel OpenCL SDK tutorial
PyOpenCL特定的
这两本书都包含OpenCL 1.1实现,但它应该是您的良好起点。
相关问题 更多 >
编程相关推荐