GNU/Linux >> Linux の 問題 >  >> Linux

docker、openmpi、および /proc/mounts 行の予期しない終了

これはおそらくあなたの /proc/mount が原因です ファイルに 512 文字を超える行が含まれているため、OpenMPI の hwloc モジュールが正しく解析できません。 Docker は /proc/mounts に非常に長い行を入れる傾向があります . 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;

これは、PROC_MOUNT_LINE_LEN の値を増やすことで修正できます。 ただし、これは一時的な回避策と見なす必要があります。


この問題は、1.11.3 (2 年前にリリース) 以降の hwloc で修正される必要があります。 hwloc 1.11.7>=1.11.3 を含む OpenMPI 3.0 にアップグレードできます。または、OpenMPI を再コンパイルして、古い組み込み hwloc の代わりに外部 hwloc を使用します。


Linux
  1. /proc/[pid]/pagemaps および /proc/[pid]/maps | Linux

  2. プロセスが実行されているフォルダーを見つける方法は?

  3. /bin と /usr/bin の違い

  1. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  2. カーネル:/dev/kmem と /dev/mem を無効化

  3. /tmp と /run の違いは何ですか?

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Bash =〜正規表現とHttps://regex101.com/?

  3. / dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?