我们目前正在尝试优化一个至少有 12 个变量的系统。这些变量的总组合超过 10 亿。这不是深度学习或机器学习或 Tensorflow 或其他任何东西,而是对时间序列数据的任意计算。
我们已经用 Python 实现了我们的代码,并成功地在 CPU 上运行它。我们还尝试了 multiprocessing,它也运行良好,但我们需要更快的计算,因为计算需要数周时间。我们有一个由 6 个 AMD GPU 组成的 GPU 系统。我们想在此 GPU 系统上运行我们的代码,但不知道如何操作。
我的问题是:
- 我们可以在支持 AMD 的笔记本电脑上运行简单的 Python 代码吗?
- 我们能否在我们的 GPU 系统上运行相同的应用程序?
我们读到我们需要调整 GPU 计算的代码,但我们不知道该怎么做。
PS:如果您需要,我可以添加更多信息。我试图让帖子尽可能简单以避免冲突。
最佳答案
至少有两个选项可以使用 GPU 加速计算:
但我通常不建议从一开始就在 GPU 上运行代码。 GPU 上的计算并不总是更快。取决于它们的复杂程度以及您在 CPU 和 GPU 上的实现有多好。如果您遵循下面的列表,您可以很好地了解会发生什么。
如果您的代码是纯 Python(列表、 float 、for 循环等),您可以通过使用矢量化 Numpy 代码看到巨大的速度提升(可能高达 100 倍)。这也是找出如何实现 GPU 代码的重要步骤,因为矢量化 Numpy 中的计算将具有类似的方案。 GPU 在可以并行化的小任务上表现更好。
一旦您拥有经过良好优化的 Numpy 示例,您就可以尝试使用 Numba 初步了解 GPU 加速情况。 .对于简单的情况,您可以只修饰 Numpy 函数以在 GPU 上运行。如果您的问题可以并行化/矢量化,则与 Numpy 代码相比,您的速度有望提高 100 到 500。
到目前为止,您可能还没有为 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/