Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 开始使用PyOpenCL_Python_Opencl_Gpgpu_Pyopencl - Fatal编程技术网

Python 开始使用PyOpenCL

Python 开始使用PyOpenCL,python,opencl,gpgpu,pyopencl,Python,Opencl,Gpgpu,Pyopencl,我最近发现了GP-GPU(通用图形处理单元)的强大功能,并希望利用它在一台机器上执行“繁重”的科学和数学计算(否则需要大型CPU集群) 我知道有几个接口可以在GPU上操作,其中最突出的是CUDA和OpenCL。后者比CUDA更适合在大多数图形卡(NVIDIA、AMD、Intel)上运行,而不是仅在NVIDA卡上运行。在我的例子中,我有一个普通的Intel 4000 GPU,它似乎与OpenCL合作得很好 现在,我需要学习如何使用PyOpenCL进行操作,以便进一步使用它!所以问题来了: 如何开始

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

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

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

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

我的背景是fortran,事实上,我需要将冗长的fortran代码翻译并并行化为python(或pyopencl),主要处理解偏微分方程和对角化矩阵的问题

我读过两个相关的网站,但它们对新手(即傻瓜)并没有真正的帮助

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


欢迎任何建议和帮助

无论GPGPU计算采用何种语言,如Java、C/C++、Python,我建议您首先开始学习GPGPU计算和OpenCL的基础知识

您可以使用以下资源—所有这些资源都是面向C/C++的,但这应该让您对OpenCL、GPGPU硬件有足够的了解,从而开始学习

  • PyOpenCL特定的

  • 有一章是关于PyOpenCL的
  • 有一章是PyOpenCL

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

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

    为了快速学习Python语法,我推荐Codecademy的Python曲目:

    然后,Udacity并行编程课程是一个开始学习GPGPU的好地方(即使课程是在CUDA中教授的)。本课程将很快教授您GPU的基本概念。您将不需要NVIDIA GPU参与,因为所有课程评估都是在线完成的


    在Udacity课程之后(或期间),我建议您阅读、运行和自定义PyOpenCL代码示例:

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

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

    应该是很好的开端。如果使用Eclipse,则应安装pydev。无论如何,安装Anaconda,因为这将为您节省很多麻烦

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

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

    一般来说,我觉得一次只学一件事效率更高,但乐趣更少

    我希望这有帮助

    您可以看到以下内容:)

  • 导言1

  • 导言2

  • 矩阵乘法


  • 我也对为pyopencl找到一个像样的文档非常感兴趣。如果你能告诉我最新情况,我将不胜感激。谢谢你的建议。我看这个讨论已经有好几年了。同时还有更好的吗?@Stéphane我怀疑这个建议仍然是最新的,因为OpenCL和并行编程的发展速度不是特别快。OpenCL是在物理硬件上运行C指令的一个子集,这使得它比在web浏览器上运行的Javascript更不流畅。