我最近发现了GPU(通用图形处理单元)的强大功能,并希望利用它在一台机器上执行“繁重”的科学和数学计算(否则需要大CPU集群)。
我知道有几个接口可以在GPU上运行,其中最突出的是CUDA和OpenCL。后者相对于CUDA具有优势,可以在大多数显卡(NVIDIA、AMD、Intel)上运行,而不仅仅是NVIDA卡。在我的例子中,我有一个普通的英特尔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上。
任何建议和帮助都是非常欢迎的!
发布于 2013-08-25 08:45:29
似乎你正在寻找最快和最有效的途径来学习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
发布于 2013-08-25 06:32:23
不管GPGPU计算采用哪种语言,比如Java、C/C++、Python,我建议您首先了解GPGPU计算和OpenCL的基础知识。
您可以使用以下资源--所有这些资源都是面向C/C++的--但是如果您对OpenCL、GPGPU硬件有足够的了解,就可以开始工作了。
PyOpenCL特异性
这两本书都包含OpenCL 1.1实现,但对您来说应该是一个很好的起点。
发布于 2016-05-03 11:22:13
作为GPU编程新手,我发现您提到的相关文章相当简单,尽管我发现示例代码完全从命令行运行,但在Eclipse中却没有使用Anaconda。我认为这可能是因为anaconda的Eclipse不同于命令行版本,而且我还没有解决这个问题。
对于学习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和may以及可能的ipython笔记本,您可能不需要深入研究GPU编程。
这些链接可以帮助您避免GPU编程,或者至少延迟学习它。请注意,在内核之间切换的成本意味着您没有为每个核心分配大量的工作量。
http://blog.dominodatalab.com/simple-parallelization/ https://pythonhosted.org/joblib/parallel.html
一般来说,我发现一次只学一件东西会更有效率,甚至更少乐趣。
我希望这能帮到你。
https://stackoverflow.com/questions/18413825
复制相似问题