如何找到MPI(4PY)可用的核心数?

动机

我的Python程序分层次地生成MPI实例.

第一个spawn总是发生并创建4个实例.由于我的计算结构,增加这个数字是没有意义的,所以我硬编码了.

根据主程序的命令行选项,4个实例中的每个实例都会调用几乎线性扩展的外部Python软件.

我用这个外部软件叫

N=3

child=MPI.COMM_SELF.Spawn(sys.executable,args=[`external.py`],maxprocs=N)

目前,我使用N = 3,这样第一个产生的4个实例每个产生3个外部程序实例,总共产生12个实例,与我工作站上的核心数相匹配.

但是,为了便携,我想做

N_avail = #on my workstation: N_avail=12

N = N_avail/MPI.COMM_WORLD.Get_size() #on my workstation: N=12/4=3

这样就不需要对可用核心的数量进行硬编码.

这可能吗,它有意义吗?

笔记

我曾希望不指定maxprocs可以完成这项工作,就像带有out -np的mpirun产生与可用内核一样多的实例.但是,Spawn默认为maxprocs = 1.

外部库的调用是阻塞的,这就是为什么我不会(不会)从N_avail中减去第一个spawn的4个实例.

我不能只使用multiprocessing.cpu_count(),因为这只会给我当前节点上的核心(在集群设置中).我打算使用SLURM调度程序在集群上运行我的代码.

MPI provides an attribute on MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, that allows the application to obtain this information in a portable manner. This attribute indicates the total number of processes that are expected. … An application typically subtracts the size of MPI_COMM_WORLD from MPI_UNIVERSE_SIZE to find out how many processes it should spawn. …

在mpi4py中,它可以打印为:

from mpi4py import MPI

version= MPI.Get_version()

print "mpi version is ",version

comm = MPI.COMM_WORLD

rank = comm.Get_rank()

size = comm.Get_size()

print "size is ",size

universe_size=comm.Get_attr(MPI.UNIVERSE_SIZE)

print "universe size is ",universe_size

mpirun -np 1 -H localhost,localhost,localhost python main.py

如果您的MPI版本高于或等于3,MPI_Info MPI_INFO_ENV可以帮助您.它有两个键可能提供一些信息:

maxprocs Maximum number of MPI processes to start.

soft Allowed values for number of processors.

要在mpi4py中使用它,您可以尝试:

soft=MPI.INFO_ENV.get("soft")

print soft

maxprocs=MPI.INFO_ENV.get("maxprocs")

print maxprocs

python mpi 多节点_python – 如何找到MPI(4PY)可用的内核数量?相关推荐

  1. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  2. python定位相邻节点_Python selenium —— 父子、兄弟、相邻节点定位方式详解

    今天跟大家分享下selenium中根据父子.兄弟.相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点. ...

  3. python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解

    今天跟大家分享下selenium中根据父子.兄弟.相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点. ...

  4. python xml添加节点_python xml文件增加节点实现代码

    公司游戏的接口配置文件采用xml,以前是用sed来修改,可是灵活性太差,有时要修改那个服时,经常会出别的节点给改了,导致语法错误,程序读取失败,玩家无法进入游戏,python有不少的xml的模块,本脚 ...

  5. python读取大文件目录_Python读取系统文件夹内所有文件并统计数量的方法

    大家先看一下Python os模块中的部分函数 python 路径相关的函数 os.listdir(dirname):列出dirname下的目录和文件 os.getcwd():获得当前工作目录 os. ...

  6. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  7. python中定义数据结构_Python中的数据结构—简介

    python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...

  8. python基本算法语句_Python中基本且又常用的算法

    这篇文章主要学习Python常用算法,Python常用排序算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algo ...

  9. python 数据框缺失值_Python:处理数据框中的缺失值

    python 数据框缺失值 介绍 (Introduction) In the last article we went through on how to find the missing value ...

最新文章

  1. 数据分析---《Python for Data Analysis》学习笔记【04】
  2. jQuery实战读书笔记(第五章)
  3. 0110-如何给Kerberos环境下的CDH集群添加Gateway节点
  4. NYOJ--927--dfs--The partial sum problem
  5. jqGrid,REST,AJAX和Spring MVC集成
  6. java分布式锁工具类_java 通过redis实现分布式锁
  7. python networkx 求图中的环_python – 在NetworkX图中获取连接的节点
  8. C语言之pthread_cond_wait()和pthread_cond_timedwait()区别(十五)
  9. HDF5快速上手全攻略
  10. 360安全卫士清理C盘
  11. 使用 Litho 改进 News Feed 上的 Android 视频表现
  12. [BZOJ2827]千山鸟飞绝
  13. 网络就好似一个个树洞
  14. gdbserver 交叉编译
  15. “立字据,你们这群混蛋!”
  16. 用IDEA创建基于Spring Cloud的Feign的微服务:服务接口、服务提供者、服务使用者分离
  17. 记一次尴尬的经历---硅胶干燥剂颗粒堵住了耳机孔
  18. 气不气!被迫无奈赚了500W,这程序员真的吊炸天...
  19. ECCV2018 papers
  20. k3 审核流程图_K3单据使用解释及流程图明细

热门文章

  1. cannot restore segment prot after reloc: Permission denied
  2. 713C - 如何进入一个研究领域
  3. 第三方支付将出新规 严防信用卡套现
  4. 使用cisco 2500路由器实现ADSL接入
  5. HP ILO2和JRE6(java runtime environment)
  6. Nest入门教程 - 初识控制器
  7. Python第七章-面向对象高级
  8. C语言 字符串大小写转换
  9. 【C语言】输入一个字符串,并对字符串中的偶数位置的字符按从小到大的顺序排序,奇数位置的字符不动,输出排序后的结果...
  10. 免费开源剪辑软件Shotcut推荐和使用教程