1

我在多 CPU/核心机器上使用mpi4py和 openmpi 来做线性代数。我的 numpy 是使用ATLAS构建的。假设我有一台 4 核机器,我想运行一个 4 节点 python 脚本,它使用 numpy 在每个节点上执行线性代数。

如何确保 ATLAS 在每个节点中进行线性代数时不使用多个内核?当我构建 ATLAS 时,似乎没有选择将其配置为一次仅在一个内核上运行。使用 Intel MKL,我认为您可以设置 OMP_NUM_THREADS=1,并且这种行为是有保证的。有没有办法为此目的构建 ATLAS?似乎没有等效的环境变量。

我猜想在多核 CPU 的每个核心上同时运行多个 BLAS 操作并不是一个好策略。任何人都可以对此发表评论或给出经验法则,这是一个好主意还是坏主意?

4

1 回答 1

1

不幸的是,ATLAS 使用的最大线程数无法通过 OMP_NUM_THREADS 等环境变量来控制。您必须将 numpy 与串行 ATLAS 库重新链接。看

http://math-atlas.sourceforge.net/faq.html#tsafe

于 2010-09-29T12:09:49.433 回答