我在多CPU /核心机器上使用mpi4py和openmpi来进行线性代数。我的numpy是使用ATLAS构建的。假设我有一台4核机器,我想运行一个4节点python脚本,使用numpy在每个节点上执行线性代数。
如果在每个节点中执行线性代数时,如何确保ATLAS不使用多个核心?当我构建ATLAS时,似乎没有选择将其配置为一次仅在一个核心上运行。使用英特尔MKL,我认为您可以设置OMP_NUM_THREADS = 1,并保证此行为。有没有办法为此目的建立ATLAS?似乎没有等效的环境变量。
我猜测在多核CPU的每个核心上同时运行多个BLAS操作并不是一个好策略。任何人都可以对此发表评论,或者给出一个好主意或坏主意的经验法则吗?
答案 0 :(得分:1)
不幸的是,ATLAS使用的最大线程数无法使用环境变量(如OMP_NUM_THREADS)进行控制。您将不得不重新链接串行ATLAS库。参见