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

我已经构build了在Docker容器中运行代码的环境。 其中一个组件是OpenMPI,我认为这是问题的根源或者是它的performance。

当我使用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。

这可能是由于/ proc / mounts文件中有一行超过512个字符,导致OpenMPI的hwloc模块无法正确parsing。 Docker倾向于将很长的行放入/ proc / mounts中。 你可以在openmpi-1.10.7 / opal / mca / hwloc / hwloc191 / hwloc / src / topology-linux.c:1677中看到bug

这可能可以通过增加到更大的数量来解决,尽pipe这应该被认为是暂时的解决方法。