Ciò è probabilmente dovuto al tuo /proc/mount
file contenente una riga superiore a 512 caratteri, impedendo al modulo hwloc di OpenMPI di analizzarlo correttamente. Docker ha la tendenza a inserire righe molto lunghe in /proc/mounts
. Puoi vedere il bug in openmpi-1.10.7/opal/mca/hwloc/hwloc191/hwloc/src/topology-linux.c:1677
:
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;
Questo può essere risolto aumentando il valore di PROC_MOUNT_LINE_LEN
, anche se dovrebbe essere considerata una soluzione temporanea.
Questo problema dovrebbe essere risolto in hwloc dalla versione 1.11.3 (rilasciata 2 anni fa). Puoi aggiornare a OpenMPI 3.0 che contiene un hwloc 1.11.7>=1.11.3. Oppure ricompila OpenMPI per usare un hwloc esterno invece del vecchio incorporato.