【发布时间】:2016-11-15 04:01:41
【问题描述】:
我在执行 SSH 和 MPICH 时遇到了一些问题。从我之前提出的一些问题中,我能够进行到执行 mpi_hello.c 程序的程度。
作为参考,我正在按照本教程设置 MPICH:https://help.ubuntu.com/community/MpichCluster
我在 root 中创建了一个名为 clusterFiles 的目录,并在所有节点上创建了一个名为 clusterUser (clusteruser) 的用户。我导出了 clusterFiles 并在所有节点中安装了 clusterFiles。此外,我在主节点上将 clusterFiles 的所有权更改为 clusterUser。我还将 clusterUser 的主目录更改为 /clusterFiles。
我在主节点上为 clusterUser 创建了一个 ssh 密钥,并将该密钥添加到授权列表中。我在所有节点和主节点上安装了一个钥匙串,我按照指南中的说明编辑了 .bashrc(我将指南中的内容复制到了 .bashrc)
我还在所有节点上安装了 MPICH2 和 GCC。
我为我的特定集群编辑了机器文件。
但是,当我去执行 MPI hello_world.c 程序时,这就是发生错误的地方。
我将指南上的代码复制并粘贴到一个 .c 文件中,并将其命名为 mpi_hello.c(这是在主节点上完成的)。
在指南的最后一部分,他只是调用了mpicc [arguments] 和mpiexec [arguments]。但是,当我打电话给 mpicc 时,我需要sudo mpicc [arguments]。这是我应该关注的问题,还是应该这样做的正确方法?
当我运行 mpiexec(不带 sudo)时,我收到以下错误:
clusteruser@rgcluster2blade1:~$ mpiexec -n 7 -f machinefile ./mpi_hello
[mpiexec@rgcluster2blade1] HYDU_parse_hostfile (./utils/args/args.c:323): unable to open host file: machinefile
[mpiexec@rgcluster2blade1] mfile_fn (./ui/mpich/utils.c:341): error parsing hostfile
[mpiexec@rgcluster2blade1] match_arg (./utils/args/args.c:153): match handler returned error
[mpiexec@rgcluster2blade1] HYDU_parse_array (./utils/args/args.c:175): argument matching returned error
[mpiexec@rgcluster2blade1] parse_args (./ui/mpich/utils.c:1609): error parsing input array
[mpiexec@rgcluster2blade1] HYD_uii_mpx_get_parameters (./ui/mpich/utils.c:1660): unable to parse user arguments
[mpiexec@rgcluster2blade1] main (./ui/mpich/mpiexec.c:153): error parsing parameters
这些文件是不是忘记安装了?起初,我认为我需要在 mpiexec 前面使用 sudo。所以当我执行时:sudo mpiexec [arguments] 它“运行”,但当我需要它以集群用户身份连接时,它以 root 身份连接到 SSH 集群。
我主要担心的是他没有以 root 身份执行他的命令。我想知道是否有一个隐含的步骤,或者至少有一个我应该执行但没有执行的命令?
另外,我注意到,当我尝试在其他节点上将 clusterFiles 的所有权更改为 clusterUser 时,我会收到一个操作不允许的错误(执行此命令时我是 root)。我的想法是,由于我更改了主节点的所有权,它会传播到其他节点,因为它们具有相同的用户名。因此,我有效地将所有权更改为自身。这是一个正确的想法还是还有更多?
编辑:
根据用户祖蓝的建议,我检查了machinefile的权限,有趣的是,它仍然设置为rgcluster2blade1。我决定运行命令sudo chown -R clusteruser /clusterFiles 以使clusterFiles 中的所有文件/文件夹都归clusteruser 所有。我只在主节点上完成了这个。将检查其他节点。
编辑 2:
好的,所以在检查了集群的其余部分之后(在做整个事情之前,我现在只用 4 个进行实验)我发现其中 2 个节点正在向除了 clusteruser 之外的另一个用户授予权限。他们将其提供给用户渲染。我尝试执行 sudo chown command 但在两者上,我都收到了 Operation not allowed 错误
【问题讨论】:
-
通常使用 NFS,您应该确保所有节点上的用户 ID 和组 ID 相同。查看相关共享文件夹的权限,特别是
machinefile。检查它们是否在所有节点上保持一致并将它们发布在此处。 -
@Zulan 当然,我会更乐意提供。检查文件权限的控制台命令是什么?
-
您可以在包含
machinefile的共享目录中运行ls -l。它将列出每个文件的所有者、组和权限。在所有节点上运行,看看是否一致。 -
@Zulan 好的,所以在一台服务器上,机器文件不属于 clusteruser。我尝试使用 sudo chown 对其进行更改,但收到操作不允许的错误。
-
在 NFS 上,所有系统上的用户 ID 必须相同。如果 NFS 文件夹在不同系统上显示不同的所有权,则表明情况并非如此。另见help.ubuntu.com/community/SettingUpNFSHowTo#User_Permissions
标签: ubuntu ubuntu-14.04 mpi cluster-computing