Es probable que esto se deba a tu /proc/mount
archivo que tiene una línea de más de 512 caracteres, lo que provoca que el módulo hwloc de OpenMPI no pueda analizarlo correctamente. Docker tiene una tendencia a poner líneas muy largas en /proc/mounts
. Puedes ver el error en 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;
Esto se puede solucionar aumentando el valor de PROC_MOUNT_LINE_LEN
, aunque eso debería considerarse una solución temporal.
Este problema debería solucionarse en hwloc desde 1.11.3 (lanzado hace 2 años). Puede actualizar a OpenMPI 3.0, que contiene hwloc 1.11.7>=1.11.3. O vuelva a compilar OpenMPI para usar un hwloc externo en lugar del antiguo incrustado.