如何在 AMD GPU 上运行 Python?

iso*_*01_ 10 python parallel-processing gpu amd

我们目前正在尝试优化一个至少有 12 个变量的系统。这些变量的总组合超过 10 亿。这不是深度学习或机器学习或 Tensorflow 或其他任何东西,而是对时间序列数据的任意计算。

我们已经在 Python 中实现了我们的代码并成功地在 CPU 上运行它。我们还尝试了多处理,这也很有效,但我们需要更快的计算,因为计算需要数周时间。我们有一个由 6 个 AMD GPU 组成的 GPU 系统。我们想在这个 GPU 系统上运行我们的代码,但不知道如何去做。

我的问题是:

  1. 我们可以在支持 AMD 的笔记本电脑上运行简单的 Python 代码吗?
  2. 我们可以在 GPU 系统上运行相同的应用程序吗?

我们读到我们需要调整 GPU 计算的代码,但我们不知道如何去做。

PS:如果您需要,我可以添加更多信息。我尽量保持帖子简单以避免冲突。

Joe*_*Joe 19

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

但我通常不建议从一开始就在 GPU 上运行代码。GPU 上的计算并不总是更快。取决于它们的复杂程度以及您在 CPU 和 GPU 上的实现有多好。如果您按照下面的列表操作,您可以很好地了解会发生什么。

  1. 如果您的代码是纯 Python(列表、浮点数、for 循环等),您可以通过使用矢量化 Numpy 代码看到巨大的加速(可能高达 100 倍)。这也是找出如何实现 GPU 代码的重要步骤,因为矢量化 Numpy 中的计算将具有类似的方案。GPU 在可以并行化的小任务上表现更好。

  2. 一旦你有了一个经过良好优化的 Numpy 示例,你就可以尝试使用Numba初步了解 GPU 加速。对于简单的情况,您可以装饰您的 Numpy 函数以在 GPU 上运行。如果您的问题可以并行化/矢量化,则与 Numpy 代码相比,您可以期待 100 到 500 的加速。

  3. 到目前为止,您可能没有为 GPU 编写任何 OpenCL C 代码,但仍然可以在其上运行您的代码。但是如果您的问题太复杂,您将不得不编写自定义代码并使用PyOpenCL运行它。与好的 Numpy 代码相比,预期的加速也是 100 到 500。

要记住的重要一点是,GPU 只有在您正确使用它并且仅用于解决某些问题时才能强大。

如果您有代码的小示例,请随时发布。

另外要说的是,CUDA 通常比 OpenCL 更易于使用。有更多的库、更多的例子、更多的文档、更多的支持。Nvidia 从一开始就在不支持 OpenCL 方面做得非常好。我通常更喜欢开放标准,但当事情变得商业和商业化时,我们很快就转向了 CUDA 和 Nvidia 硬件。