【问题标题】:Multiprocessing the Python module 'emcee', but not all available cores on the machine are being used多处理 Python 模块“emcee”,但并非机器上的所有可用内核都在使用
【发布时间】:2021-11-12 23:32:35
【问题描述】:

我正在使用 emcee 文档中所述的多处理模块并行化 emcee。但是,htop 显示该程序一直使用有限数量的内核 (26-27)。我正在运行我的代码的计算机有 80 个可用内核,我想利用所有这些内核来加速代码。

有人可以帮我解决这个问题吗?我在文档中没有找到任何解决方案。

【问题讨论】:

  • 大多数操作系统都定义了物理和逻辑处理器组。尤其是 Windows,每组的逻辑处理器不超过 64 个,"By default, an application is constrained to a single group"。我认为 Linux 也可能有类似的限制。您可以仔细检查 multiprocessing.cpu_count 报告的内容。默认情况下,shell 通常还存在进程、内存和文件句柄限制(类似于ulimit)。最后确保您的 IO 不仅受磁盘速度的限制...
  • @Aaron 谢谢。我检查了multiprocessing.cpu_count,它给了我 80。我也不受限制。当我在其他程序中使用多处理模块时,我通过 htop 看到所有 80 个内核都在使用。但是对于'emcee',这个限制仍然存在,这真的减慢了我的代码......
  • 在这种情况下,可能是库或库使用的算法的限制。
  • @Aaron 非常感谢您的洞察力。我刚刚发现 emcee 使用的核心数量等于步行者数量的一半,这就是为什么不是所有核心都被使用的原因。

标签: python multiprocessing pool emcee


【解决方案1】:

万一有人遇到同样的问题,我刚刚发现emcee 将使用相当于步行者数量一半的核心数量。在我的例子中,我有 50 个 walker,因此使用了 25 个 CPU 内核。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多