“无效的 MIT-MAGIC-COOKIE-1 密钥”消息 - Ubuntu 20.04 上的 MPI

“无效的 MIT-MAGIC-COOKIE-1 密钥”消息 - Ubuntu 20.04 上的 MPI

在 Ubuntu 20.04 上运行使用 MPI 的程序时,系统会给我一个“MIT-MAGIC-COOKIE-1 密钥无效”的警告。我最近才升级;使用 19.10 时没有遇到这样的问题。

我想知道出了什么问题。

以下是一些系统结果:

$ xauth list
Yantra5/unix:  MIT-MAGIC-COOKIE-1  d27adab3ff430390b17c59fb0f6e7e28
#ffff#59616e74726135#:  MIT-MAGIC-COOKIE-1  d27adab3ff430390b17c59fb0f6e7e28
$ hostnamectl status
   Static hostname: Yantra5
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: 42b9dd9e9200409c81515ce51e5f9d52
           Boot ID: 42be2b4557bf4d29934673457c4560b2
  Operating System: Ubuntu 20.04.1 LTS
            Kernel: Linux 5.4.0-42-generic
      Architecture: x86-64

我在 Ubuntu 20.04 上运行 openmpi。所有带有 MPI_Init() 的程序都向我发出相同的警告。

可能是一个相关问题。

答案1

问题仍然存在吗?我遇到了和你一样的问题,或者你提到的问题,我已修复(“它自己修复了”更准确)。

在本地计算机上安装 MPI 之前,我安装了 NVIDIA 驱动程序以使用 OpenCL 和 CUDA,并遇到了同样的警告。我切换回 X.Org 驱动程序(我的做法是:软件和更新 -> 设置 -> 附加驱动程序 -> 使用 X.Org),重新启动后警告消息就消失了。

我尝试再次切换到我的 NVIDIA 驱动程序,重新启动后警告没有再次出现,所以最终只需更换驱动程序就可以解决问题。这种方法并不优雅,也没有解释太多,但值得一试。此外,由于我无法重现该问题,因此可能只需“关闭并重新打开”就可以解决问题,这就是我询问您的问题是否仍然存在的原因。

这是在花了一个多小时寻找类似问题的答案后,出于完全绝望而做出的决定。,,xhost +local:或者没有改变任何东西,也没有在 mpirun 选项中指定 DISPLAY (如xhost +unset DISPLAYexport DISPLAY=whatever:X.X官方文档)。我还重新启动了(在更改驱动程序之前),但grep xauth ~/.bash*没有任何结果(所以我的 .Xauthority 文件没有从终端被修改)。

我发现避免该问题的另一种方法是禁用图形界面并仅使用命令行(ctrl + alt + F3),但我认为与没有图形界面相比,警告只是一个小小的不便。

对于那些比我更了解 mpi 和 Xserver 并且想要解决这个问题的人来说,这里有一些线索:

  • 问题这里可能相关,显然用 进行编译mpich解决了这个问题,而当我用 编译一个小的 c 脚本时mpicc我收到了警告。

对于那些遇到这种情况、更换驱动程序 + 重新启动不起作用并且和我一样对 xauth 和 .Xauthority 一无所知的人来说,这里有一些线索:

  • 很多类似的问题都引用了 .Xauthority 文件的路径(例如这里那里.) 可以通过 来找到echo $XAUTHORITY
  • 正如本问题所述,您通过 与其进行交互xauth。我正准备尝试手动更改 MIT-MAGIC-COOKIE-1 作为最后的手段,尽管我相信此时安装旧版本的 mpi 并在它们之间切换可能会更容易update-alternatives

答案2

该问题是由库引起的libhwloc,该库由OpenRTE(OpenMPI 组件)用于在启动并行进程期间探索节点的硬件拓扑。当hwloc_topology_load()被调用时,libhwloc会遍历其所有可用组件,这些组件以插件形式实现。其中一个组件gl负责收集有关系统图形设备的信息,并使用 X11 调用,例如XOpenDisplay(),如果无法连接到 X11 服务器,则会生成错误消息“MIT-MAGIC-COOKIE-1 密钥无效”。

在许多情况下,HPC 集群上不需要此 gl 组件,可以通过设置HWLOC_COMPONENTS环境变量来排除它来安全地禁用它:

export HWLOC_COMPONENTS="-gl"

相关内容