目前我们正在尝试编写一个使用 mpirun 启动多个 X11 客户端的程序。如果程序是纯文本的,那么使用以下命令,我们可以在计算机列表上运行进程:
mpirun -np 4 --hostfile hostlist date
这里的hostlist是mpi配置的计算机的文件。计算机被设置为使用公钥自动进行身份验证。我们也可以只在本地计算机上运行X11程序,例如:
mpirun -np 4 xclock
按预期显示四个 xclock。但是,如果我们尝试使用主机文件运行 X11 程序:
mpirun -np 4 --hostfile hostlist xclock
然后两个 xclock 启动,但远程计算机报告:
Error: can't open display:
不过我们已经配置了.ssh/配置和
ForwardX11 Yes
我们可以验证以下命令序列是否有效:
ssh 10.0.0.2
# connect to mpi cluster node
xclock
# xclock appears on screen
此外,如果我们使用 mpirun 的 -x 设置 DISPLAY 变量,如下所示:
mpirun -np 4 --hostfile hostlist -x DISPLAY=10.0.0.1:0.0 xclock
然后我们得到另一个错误:
Error: can't open display: 10.0.0.1:0.0
我们尝试通过以下方式禁用任何访问控制:
xhost +
总而言之,我们需要一些有关 mpirun 和 X11 转发的帮助。我们在 Ubuntu 12.10 和 openmpi 1.4.5 上运行。
答案1
以下命令似乎效果很好
mpirun -d -np 4 -hostfile hostlist -mca pls_rsh_agent "ssh -X -n" xclock