如何在AMD GPU上运行Python?

19
我们目前正在尝试优化一个系统,其中至少有12个变量。这些变量的总组合超过10亿。这不是深度学习、机器学习、Tensorflow或其他什么,而是对时间序列数据进行任意计算。
我们已经用Python实现了我们的代码,并成功在CPU上运行。我们还尝试了多进程,也运行得很好,但由于计算需要几周时间,我们需要更快的计算速度。我们有一个由6个AMD GPU组成的GPU系统。我们想在这个GPU系统上运行我们的代码,但不知道如何操作。
我的问题是:
  1. 我们能在支持AMD的笔记本电脑上运行我们的简单Python代码吗?
  2. 我们能在我们的GPU系统上运行相同的应用程序吗?
我们了解到我们需要调整代码以进行GPU计算,但我们不知道如何操作。
附注:如果您需要,我可以提供更多信息。我尽量保持帖子简单,以避免冲突。
1个回答

23

使用GPU加速计算至少有两个选项:

但我通常不建议从一开始就在GPU上运行代码。 GPU上的计算并不总是更快的。这取决于它们有多复杂以及您在CPU和GPU上的实现有多好。如果按照下面的列表,您可以对预期结果有一个良好的了解。

  1. 如果您的代码是纯Python(list、float、for循环等),则使用向量化的Numpy代码可能会使速度提高很多(可能高达100倍)。这也是找出如何将GPU代码实现的重要步骤,因为向量化Numpy中的计算具有类似的方案。GPU在可并行化的小任务上表现更佳。

  2. 一旦您拥有优化良好的Numpy示例,就可以尝试使用Numba来获取首次GPU加速效果。 对于简单的情况,您只需将Numpy函数装饰为在GPU上运行即可。 如果您的问题可以被并行化/向量化,则可以期望与Numpy代码相比,速度提高100至500倍。

  • 你可能已经在GPU上运行代码而没有编写任何OpenCL C代码,但是如果你的问题过于复杂,则必须编写自定义代码并使用PyOpenCL运行它。预期加速比良好的Numpy代码快100至500。

  • 重要的是要记住,只有在正确使用GPU,并且仅针对一定范围内的问题时,GPU才具有强大的性能。

    如果你有你的代码的小例子,请随时发布。

    另一个需要提到的是CUDA通常比OpenCL更容易使用。有更多的库、更多的示例、更多的文档、更多的支持。Nvidia在最初并不支持OpenCL做得非常好。我通常喜欢开放标准,但当事情变成商业和商业化时,我们很快就转向了CUDA和Nvidia硬件。


    使用Numba在AMD ROC GPU上:https://numba.pydata.org/numba-doc/latest/roc/index.html - Galen
    Numba已经弃用了AMD ROC GPU:https://numba.readthedocs.io/en/stable/release-notes.html?highlight=changelog#version-0-54-0-19-august-2021 - BBG
    做得不错哈哈哈 - undefined

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接