内存带宽瓶颈

内存带宽瓶颈

我有一个 python pandas 程序。当我在具有 8 个内核的 AWS Ec2 上运行时,我的 CPU 利用率达到 100%,程序在 8 分钟内完成。然后,如果我使用 16 个内核,我的 CPU 利用率只能达到 50%,程序仍然在 8 分钟内完成。我怀疑它遇到了内存带宽瓶颈,所以我选择了 X1,16xlarge 实例,它有 64 个内核,并声称内存带宽为 300GB/s。然而,这并没有帮助。该程序只使用了 64 个内核中的一小部分,甚至 10 分钟后也没有完成。 ec2 X1 实例

知道发生什么事了吗?

(顺便说一下,同样的程序在我的旧式 4 核台式机上运行需要 16 分钟)

更多细节:该程序使用 GridSearchCV,然后使用作业库并行运行多进程。进程数始终等于系统中的核心数。

答案1

Python 有一个“全局解释器锁”,限制了它有效利用多个线程的能力。回应在此站点上,您应该考虑用 C/C++ 编写时间关键函数。

如果可能的话,请考虑将分析分成更小的块,然后将它们作为单独的进程运行,以避免全局解释器锁问题。

相关内容