python - 如何在 AMD GPU 上运行 Python?

标签 python parallel-processing amd gpu

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

我们已经用 Python 实现了我们的代码,并成功地在 CPU 上运行它。我们还尝试了 multiprocessing,它也运行良好,但我们需要更快的计算,因为计算需要数周时间。我们有一个由 6 个 AMD GPU 组成的 GPU 系统。我们想在此 GPU 系统上运行我们的代码,但不知道如何操作。

我的问题是:

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

我们读到我们需要调整 GPU 计算的代码,但我们不知道该怎么做。

PS:如果您需要,我可以添加更多信息。我试图让帖子尽可能简单以避免冲突。

最佳答案

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

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

  1. 如果您的代码是纯 Python(列表、 float 、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 硬件。

关于python - 如何在 AMD GPU 上运行 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56220260/

相关文章:

python聚合来自两个数据框的列

java - 在 Java 7 中并行处理结果,使用非最终变量

javascript - 允许模块与 AMD/CommonJs 或脚本标签一起工作的包装器?

node.js - 使用导入时,TypeScript 将无法解析模块

python - 如何使用可调用作为 pytest parametrize() 参数?

python - 为什么 numpy 索引在更高维度上的工作方式不同?

python - 无法添加角色和更改昵称,但机器人是公会管理员

java - 使用 java.util.Arrays 和 scala.concurrent.ops.par 的 Scala 并行排序

python并行编程

backbone.js - Backbone 、RequireJS 和树