IMPI Python集群运行报错:
Intel MPI环境利用hostfile多主机运行下报错
HYDU_process_mfile_token (../../utils/args/args.c:523): token slots not supported at this time
HYDU_parse_hostfile (../../utils/args/args.c:597): unable to process token
mfile_fn (../../ui/mpich/utils.c:446): error parsing hostfile
match_arg (../../utils/args/args.c:243): match handler returned error
HYDU_parse_array (../../utils/args/args.c:269): argument matching returned error
parse_args (../../ui/mpich/utils.c:4770): error parsing input array
HYD_uii_mpx_get_parameters (../../ui/mpich/utils.c:5106): unable to parse user arguments
将hostfile文件中指定进程个数的slots参数删去仍然会报错。
之前用C语言的MPI和对应的hostfile
尝试集群运行,已经通过验证是没有问题的。
使用IMPI的mpirun
就发生了上述问题,还在尝试解决中
似乎和原来的OpenMPI的命令行参数不太一样,尝试了几个都没法之后,只用用命令
/opt/intel/intelpython2/bin/mpirun -help | grep host
来查找所有和host
有关的配置参数来看一遍了,输出如下
$ /opt/intel/intelpython2/bin/mpirun -help | grep host
-f {name} | -hostfile {name} file containing the host names
-hosts {host list} comma separated host list
-host {hostname} host on which processes are to be run
-hostos {OS name} operating system on particular host
-perhost <n> place consecutive <n> processes on each host
-ppn <n> stand for "process per node"; an alias to -perhost <n>
-grr <n> stand for "group round robin"; an alias to -perhost <n>
-localhost local hostname for the launching node
不使用hostfile参数,使用host参数指定唯一主机
- 前置问题一: 如果只输入
-host
参数指定远程的唯一运行主机,发现会报错:
HYDU_sock_connect (../../utils/sock/sock.c:224): unable to get host address for ServerXXXX (1)
[proxy:0:0@localhost.localdomain] main (../../pm/pmiserv/pmip.c:468): unable to connect to server ServerXXXX at port 38935 (check for firewalls!)
可能原因:
1. 防火墙未关闭,被防住了
2. 主机名无法解析
在确认防火墙关闭的情况下,注意力集中在主机名解析的问题上
在google上搜索了几个相同问题的链接,最后在StackOverFlow找到了这个问题,参考StackOverFlow相同问题
在主机2上加入对master主机名和IP地址的对应:
在 主机2的/etc/hosts/
文件中加入
192.168.xx.xxx MasterName
再使用问题一中提到的命令,可以发现已经正常工作。
使用不含slots的hostfile文件已经可以正常运行。
但是含有slots参数无法正常解析,是否OpenMPI 和 intel MPI的hostfile文件格式不一致呢
是的,没错,不一致。参考Intel的MPI进程控制说明
intel MPI的hostfiles正确写法应该是 : node0:2
其次,通过亲测,参数要使用 -machinefile
才能有效控制每台机器上的进程个数。更多详细信息请看上述链接。
至此,集群运行MPI的环境问题应该是已经全部解决了。
DAPL startup: RLIMIT_MEMLOCK too small
后来多节点并行计算时,发现这样的warning:
[5] DAPL startup: RLIMIT_MEMLOCK too small
[4] DAPL startup: RLIMIT_MEMLOCK too small
[2] DAPL startup: RLIMIT_MEMLOCK too small
[1] DAPL startup: RLIMIT_MEMLOCK too small
使用 ulimit -a
命令查看:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 6561
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
可以清楚看到max locked memory (kbytes, -l) 64
应该调大它就不会有这个问题了。更多详情参考此处
关于ulimit
命令的使用,参考菜鸟教程Linux ulimit命令
关于max memory locked
概念,可以参考此博客
内存锁定值的限制(max locked memory)
这个值只对普通用户起作用,对超级用户不起作用,这个问题是由于CAP_IPC_LOCK造成的.
linux对内存是分页管理的,这意味着有不需要时,在物理内存的数据会被换到交换区或磁盘上.
有需要时会被交换到物理内存,而将数据锁定到物理内存可以避免数据的换入/换出.
采用锁定内存有两个理由:
1)由于程序设计上需要,比如oracle等软件,就需要将数据锁定到物理内存.
2)主要是安全上的需要,比如用户名和密码等等,被交换到swap或磁盘,有泄密的可能,所以一直将其锁定到物理内存.
IMPI Python集群运行报错:的更多相关文章
- ceph-deploy离线部署ceph集群及报错解决FAQ
ceph-deploy部署ceph集群 环境介绍 主机名 ip地址 操作系统 角色 备注 ceph-node1 10.153.204.13 Centos7.6 mon.osd.mds.mgr.rgw. ...
- Redis集群创建报错
Redis集群环境:och163/och164/och165 在执行如下脚本时报错: ./src/redis-trib.rb create 10.1.253.163: 10.1.253.164: 10 ...
- elasticsearch集群搭建报错: not enough master nodes discovered during pinging
自己用一台 阿里云 服务器 搭建ES集群的时候,总是报上面的问题. 而且两个ES服务都是报同样的问题.自己的配置文件如下: es服务1配置文件 cluster.name: elasticsearch ...
- elasticsearch配置集群+elk报错总结
配置ELK的时候,我平常遇到了以下几种报错情况,整理如下(持续更新中): elasticsearch启动失败 # systemctl start elasticsearch Job for elast ...
- 执行redis命令redis-trib.rb查看集群信息报错cannot load such file -- redis (LoadError)
问题描述: 在执行redis-trib.rb命令查看集群状态的时候,报错: [aiprd@hadoop1 ~]$ redis-trib.rb check Traceback (most recent ...
- HBase 2.1.3 集群 web 报错InvalidProtocolBufferException 解决方法
搭建好HBase 集群后,各种后台进程都正常,搭建手册参考: Hbase 2.1.3 集群搭建手册https://www.cndba.cn/dave/article/3322 但是通过web访问,却报 ...
- rabbimq集群搭建报错:Error: unable TO perform an operation ON node 'rabbit@test3'. Please see diagnostics information AND suggestions below.
在搭建rabbitmq集群的时候,添加内存节点时,抛出异常:Error: unable TO perform an operation ON node 'rabbit@test3'. Please s ...
- 【问题集】redis集群set报错(error) MOVED 11469 192.168.181.201:7002
没有启动集群模式(即缺少了那个"-c"): redis-cli -c -h yourhost -p yourpost
- 【Python】脚本运行报错:IndentationError: unindent does not match any outer indentation level
[问题] 一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError: unindent does not ...
随机推荐
- ARM 汇编指令集 特点5:ARM 多级指令流水线
1.为增加处理器指令流 的速度,ARM使用多级流水线. 就是举个例子: mov r1,#0 ,这条指令 分几个人做,一个人从存储器取指令,解码指令中用到的寄存器,寄存器运算. 这样三步 :如果一个人做 ...
- 轻量ORM-SqlRepoEx (十)SqlRepoEx Nuget包下载说明
ORM-SqlRepoEx 是 .Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵 ...
- 常见的springmvc、SpringBoot的注解
springMvc的常用注解 : @Controller :用于标记在一个类上,使用它标记的类就是一个springmcv Controller对象,分发处理器将会扫描使用了该注解 的类的方法,并检测该 ...
- 四、MapReduce 基础
是一个并行计算框架(计算的数据源比较广泛-HDFS.RDBMS.NoSQL),Hadoop的 MR模块充分利用了HDFS中所有数据节点(datanode)所在机器的内存.CUP以及少量磁盘完成对大数据 ...
- Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较
servlet中通过request.getParameter()从网页获取参数 通过request session servletContext几个域对象的setAttribute(String ,O ...
- 微信小程序 | 未来O2O电商的“阴谋”
发展历史 2016年1月11日,微信之父张小龙时隔多年的公开亮相,提出了公众号服务的短板,而透露微信内部正在研发的新形态工具,称之"微信小程序". 2016年9月21日,微信小程序 ...
- 初学JavaScript从入门到放弃(一)JavaScript介绍、变量、数据类型
一.JavaScript介绍 1.JavaScript:轻量级的客户端脚本语音 2.目前js已经不仅仅是客户语音,基于NODE可以做服务器端程序,所以Javascript是全栈编程语音 3.js及部分 ...
- BufPay.com 个人收款接口 接入步骤
作为独立开发者产品需要收款是非常麻烦的,注册公司维护成本太高,市面上各种收款工具要么手续费太高,要么到账很慢,体验很不好. 看到 「BufPay.com 个人收款」 这个收款工具,挺有意思的.原理是监 ...
- 【HDOJ 1337】I Hate It(线段树维护区间最大值)
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写 ...
- 解决 LLVM 错误提示 may only occur zero or one times!
使用 LLVM 混淆器添加参数进行编译提示如下错误:clang (LLVM option parsing): for the -bcf option: may only occur zero or o ...