python mpi 多节点_python – 如何找到MPI(4PY)可用的内核数量?
如何找到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)可用的内核数量?相关推荐
- python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...
本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...
- python定位相邻节点_Python selenium —— 父子、兄弟、相邻节点定位方式详解
今天跟大家分享下selenium中根据父子.兄弟.相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点. ...
- python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解
今天跟大家分享下selenium中根据父子.兄弟.相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点. ...
- python xml添加节点_python xml文件增加节点实现代码
公司游戏的接口配置文件采用xml,以前是用sed来修改,可是灵活性太差,有时要修改那个服时,经常会出别的节点给改了,导致语法错误,程序读取失败,玩家无法进入游戏,python有不少的xml的模块,本脚 ...
- python读取大文件目录_Python读取系统文件夹内所有文件并统计数量的方法
大家先看一下Python os模块中的部分函数 python 路径相关的函数 os.listdir(dirname):列出dirname下的目录和文件 os.getcwd():获得当前工作目录 os. ...
- python算法和数据结构_Python中的数据结构和算法
python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...
- python中定义数据结构_Python中的数据结构—简介
python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...
- python基本算法语句_Python中基本且又常用的算法
这篇文章主要学习Python常用算法,Python常用排序算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algo ...
- python 数据框缺失值_Python:处理数据框中的缺失值
python 数据框缺失值 介绍 (Introduction) In the last article we went through on how to find the missing value ...
最新文章
- 数据分析---《Python for Data Analysis》学习笔记【04】
- jQuery实战读书笔记(第五章)
- 0110-如何给Kerberos环境下的CDH集群添加Gateway节点
- NYOJ--927--dfs--The partial sum problem
- jqGrid,REST,AJAX和Spring MVC集成
- java分布式锁工具类_java 通过redis实现分布式锁
- python networkx 求图中的环_python – 在NetworkX图中获取连接的节点
- C语言之pthread_cond_wait()和pthread_cond_timedwait()区别(十五)
- HDF5快速上手全攻略
- 360安全卫士清理C盘
- 使用 Litho 改进 News Feed 上的 Android 视频表现
- [BZOJ2827]千山鸟飞绝
- 网络就好似一个个树洞
- gdbserver 交叉编译
- “立字据,你们这群混蛋!”
- 用IDEA创建基于Spring Cloud的Feign的微服务:服务接口、服务提供者、服务使用者分离
- 记一次尴尬的经历---硅胶干燥剂颗粒堵住了耳机孔
- 气不气!被迫无奈赚了500W,这程序员真的吊炸天...
- ECCV2018 papers
- k3 审核流程图_K3单据使用解释及流程图明细
热门文章
- cannot restore segment prot after reloc: Permission denied
- 713C - 如何进入一个研究领域
- 第三方支付将出新规 严防信用卡套现
- 使用cisco 2500路由器实现ADSL接入
- HP ILO2和JRE6(java runtime environment)
- Nest入门教程 - 初识控制器
- Python第七章-面向对象高级
- C语言 字符串大小写转换
- 【C语言】输入一个字符串,并对字符串中的偶数位置的字符按从小到大的顺序排序,奇数位置的字符不动,输出排序后的结果...
- 免费开源剪辑软件Shotcut推荐和使用教程