docker,openmpi和/ proc / mounts行的意外结束

时间:2017-09-10 08:01:11

标签: linux docker openmpi

我已经构建了在Docker容器中运行代码的环境。其中一个组件是OpenMPI,我认为它是问题的根源或表现出来。

当我使用MPI运行代码时,我收到消息,

Unexpected end of /proc/mounts line `overlay / overlay rw,relatime,lowerdir=/var/lib/docker/overlay2/l/NHW6L2TB73FPMK4A52XDP6SO2V:/var/lib/docker/overlay2/l/MKAGUDHZZTJF4KNSUM73QGVRUD:/var/lib/docker/overlay2/l/4PFRG6M47TX5TYVHKQQO2KCG7Q:/var/lib/docker/overlay2/l/4UR3OEP3IW5ZTADZ6OKT77ZBEU:/var/lib/docker/overlay2/l/LGBMK7HFUCHRTM2MMITMD6ILMG:/var/lib/docker/overlay2/l/ODJ2DJIGYGWRXEJZ6ECSLG7VDJ:/var/lib/docker/overlay2/l/JYQIR5JVEUVQPHEF452BRDVC23:/var/lib/docker/overlay2/l/AUDTRIBKXDZX62ANXO75LD3DW5:/var/lib/docker/overlay2/l/RFFN2MQPDHS2Z'
Unexpected end of /proc/mounts line `KNEJCAQH6YG5S:/var/lib/docker/overlay2/l/7LZSAIYKPQ56QB6GEIB2KZTDQA:/var/lib/docker/overlay2/l/CP2WSFS5347GXQZMXFTPWU4F3J:/var/lib/docker/overlay2/l/SJHIWRVQO5IENQFYDG6R5VF7EB:/var/lib/docker/overlay2/l/ICNNZZ4KB64VEFSKEQZUF7XI63:/var/lib/docker/overlay2/l/SOHRMEBEIIP4MRKRRUWMFTXMU2:/var/lib/docker/overlay2/l/DL4GM7DYQUV4RQE4Z6H5XWU2AB:/var/lib/docker/overlay2/l/JNEAR5ISUKIBKQKKZ6GEH6T6NP:/var/lib/docker/overlay2/l/LIAK7F7Q4SSOJBKBFY4R66J2C3:/var/lib/docker/overlay2/l/MYL6XNGBKKZO5CR3PG3HIB475X:/var/lib/do'

为代码行打印该消息

MPI_Init(&argc,&argv);

为了使问题更加难以理解,只有当主机是mac os x时才会打印警告信息,对于linux主机,一切正常。

除警告信息外,一切正常。我不知道OpenMPI和docker如何能够解决这个问题。

2 个答案:

答案 0 :(得分:8)

这可能是由于你的/ proc / mounts文件中有一行大于512个字符,导致OpenMPI的hwloc模块无法正确解析它。 Docker倾向于将非常长的行放入/ proc / mounts。您可以在openmpi-1.10.7 / opal / mca / hwloc / hwloc191 / hwloc / src / topology-linux.c中找到该错误:1677

这可以通过将其大小增加到更大的数量来修复,但这应该被视为临时解决方法。

答案 1 :(得分:2)

这个问题应该在自1.11.3(2年前发布)以来的hwloc中修复。您可以升级到包含hwloc 1.11.7> = 1.11.3的OpenMPI 3.0。或者重新编译OpenMPI以使用外部hwloc而不是旧的嵌入式hwloc。