我遇到了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。
我为我的scpecific集群编辑了机器文件。
但是,当我去执行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用户)。我的想法是,由于我更改了主节点上的所有权,因此它传播到其他节点,因为它们具有相同的用户名。所以我有效地将所有权改为自己。这是一个正确的想法还是那么多呢?
编辑:
根据用户Zulan的建议,我检查了machinefile
的权限。有趣的是,它仍然设置为rgcluster2blade1。我决定运行命令sudo chown -R clusteruser /clusterFiles
,以使clusterFiles中的所有文件/文件夹归clusteruser所有。我只在主节点上完成了这个。将检查其他节点。
编辑2:
好的,所以在检查了群集的其余部分之后(我现在只在使用4之前完成整个事情)我发现其中2个节点除了clusteruser之外还授予了另一个用户的权限。他们将它提供给用户渲染。我尝试执行sudo chown command
,但两者都收到了“操作不允许错误”
答案 0 :(得分:1)
就像更新一样。由于我发现GID和UID都搞砸了,我决定删除用户并创建一个新帐户。在做任何事情之前,我确保检查并在需要时更改用户的UID和GID,使其在所有节点上都相同。我不记得我头顶的命令了。稍后会找。一旦找到它,我会更新这个答案。
Anftwards,我接着指南,一切正常。