Dies liegt wahrscheinlich an Ihrem /proc/mount
Datei, die eine Zeile enthält, die länger als 512 Zeichen ist, was dazu führt, dass das hwloc-Modul von OpenMPI sie nicht korrekt analysieren kann. Docker neigt dazu, sehr lange Zeilen in /proc/mounts
einzufügen . Sie können den Fehler in openmpi-1.10.7/opal/mca/hwloc/hwloc191/hwloc/src/topology-linux.c:1677
sehen :
static void
hwloc_find_linux_cpuset_mntpnt(char **cgroup_mntpnt, char **cpuset_mntpnt, int fsroot_fd)
{
#define PROC_MOUNT_LINE_LEN 512
char line[PROC_MOUNT_LINE_LEN];
FILE *fd;
*cgroup_mntpnt = NULL;
*cpuset_mntpnt = NULL;
/* ideally we should use setmntent, getmntent, hasmntopt and endmntent,
* but they do not support fsroot_fd.
*/
fd = hwloc_fopen("/proc/mounts", "r", fsroot_fd);
if (!fd)
return;
Dies kann behoben werden, indem der Wert von PROC_MOUNT_LINE_LEN
erhöht wird , obwohl dies als vorübergehende Problemumgehung betrachtet werden sollte.
Dieses Problem sollte in hwloc seit 1.11.3 (veröffentlicht vor 2 Jahren) behoben sein. Sie können entweder auf OpenMPI 3.0 upgraden, das ein hwloc 1.11.7>=1.11.3 enthält. Oder kompilieren Sie OpenMPI neu, um ein externes hwloc anstelle des alten eingebetteten zu verwenden.