python 多处理硬件
Hardware for python multiprocessing
我有一个任务需要在许多不同的 pandas 数据帧上 运行 相同的函数。我将所有数据帧加载到一个列表中,然后使用 multiprocessing
模块将其传递给 Pool.map
。函数代码本身已尽可能向量化,包含一些 if/else 子句并且没有矩阵运算。
我目前使用的是 10 核至强处理器,希望加快速度,最好从 Pool(10)
升级到 Pool(xxx)
。我看到两种可能性:
GPU 处理。从我读到的内容来看,我不确定我是否可以实现我想要的,并且在任何情况下都需要大量的代码修改。
至强融核。我知道它已停产,但据说代码改编更容易,如果真是这样,我很乐意得到一个。
我应该专注于哪条道路?还有其他选择吗?
软件:Ubuntu18.04,Python3.7。硬件:X99 芯片组,10 核 xeon(无 HT)
您可以依赖新的 Intel 2066 平台或 Xeon。使用最新的 AVX512,他们大大加快了 numpy 的处理速度(numpy 是 pandas 的基础)。检查:https://software.intel.com/en-us/articles/the-inside-scoop-on-how-we-accelerated-numpy-umath-functions
首先,尝试切换到基于 numpy 的计算(即使在系列上使用简单的 .values),它可以将处理速度提高 10 倍
你也可以尝试入手2块CPU主板,获得更多的并行计算能力。
在大多数情况下,瓶颈不是数据的处理,而是IO操作——从驱动器读取到内存。这也将是使用 GPU 的问题。
花了一段时间,但在将其全部更改为 numpy 并实现更多矢量化后,我设法将速度提高了 20 倍以上 - 感谢 Paul。
max9111 也谢谢,我会看看 numba。
我有一个任务需要在许多不同的 pandas 数据帧上 运行 相同的函数。我将所有数据帧加载到一个列表中,然后使用 multiprocessing
模块将其传递给 Pool.map
。函数代码本身已尽可能向量化,包含一些 if/else 子句并且没有矩阵运算。
我目前使用的是 10 核至强处理器,希望加快速度,最好从 Pool(10)
升级到 Pool(xxx)
。我看到两种可能性:
GPU 处理。从我读到的内容来看,我不确定我是否可以实现我想要的,并且在任何情况下都需要大量的代码修改。
至强融核。我知道它已停产,但据说代码改编更容易,如果真是这样,我很乐意得到一个。
我应该专注于哪条道路?还有其他选择吗?
软件:Ubuntu18.04,Python3.7。硬件:X99 芯片组,10 核 xeon(无 HT)
您可以依赖新的 Intel 2066 平台或 Xeon。使用最新的 AVX512,他们大大加快了 numpy 的处理速度(numpy 是 pandas 的基础)。检查:https://software.intel.com/en-us/articles/the-inside-scoop-on-how-we-accelerated-numpy-umath-functions
首先,尝试切换到基于 numpy 的计算(即使在系列上使用简单的 .values),它可以将处理速度提高 10 倍
你也可以尝试入手2块CPU主板,获得更多的并行计算能力。
在大多数情况下,瓶颈不是数据的处理,而是IO操作——从驱动器读取到内存。这也将是使用 GPU 的问题。
花了一段时间,但在将其全部更改为 numpy 并实现更多矢量化后,我设法将速度提高了 20 倍以上 - 感谢 Paul。 max9111 也谢谢,我会看看 numba。