gpt4 book ai didi

python - Python 中的 GPGPU 编程

转载 作者:太空狗 更新时间:2023-10-30 01:49:42 24 4
gpt4 key购买 nike

我要开始GPGPU用 Python 编程。我应该从 pyopencl 还是 clyther 开始?有什么区别?

最佳答案

OpenCL 由两部分组成。主机端通常用 C 编写,设备端用 OpenCL 定义的 C 派生语言编写。此代码在运行时编译到设备(通常是 GPU)。

CLyther 试图抽象出一切。您用 Python 编写主机端代码。您在 Python 的子集中编写设备端代码(以类似于 Cython 的方式)。这是非常高级且易于使用的。

PyOpenCL 是从 Python 到 OpenCL API 的相对低级别的绑定(bind)。设备端代码是用 OpenCL 的 C99 子集编写的。它使您可以完全访问和完全控制 OpenCL。很少被抽象掉。

我对两者的经验都有限,但我的印象是,一旦两者都成熟了,我更愿意在大多数项目中使用 Clyther。它对用户更友好,这意味着您更有可能使用它,并且使用它的次数更多。在 Clyther 和 Python 之间来回转移代码也比 PyOpenCL 和 Python 更容易,因此代码维护和重构应该更容易。对于非常注重性能的项目,我更喜欢 PyOpenCL。它提供了更好的低级控制,并减少了您与硬件之间的层次。 PyOpenCL 的最终可能性能应该比 Clyther 更好。

我不知道这种情况是否会永远持续下去。 PyOpenCL 最终可能会添加更高级别的构造,而 Clyther 最终可能会添加较低级别的控制。在理想情况下,Clyther 开发人员会移动核心,使其构建在 PyOpenCL 之上,这样我们就不必选择,也可以避免重复劳动。不过,我怀疑这是否会发生。

目前看来,PyOpenCL 比 Clyther 更成熟。它最先开始,范围不那么雄心勃勃。它的文档比 Clyther 更好,并且似乎拥有更大的用户社区。两者的代码大小相当相似——Clyther 大约有 4KLOC 的 Python 和 4KLOC 的 C。PyOpenCL 大约有 7KLOC 的 Python 代码和 9KLOC 的 C++ 代码。这是近似的(包括构建系统、示例等),因此不应被视为暗示超出近似相等的任何内容。

关于python - Python 中的 GPGPU 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3455608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com