use*_*853 5 c linux parallel-processing
当我尝试运行 mpi 示例时,权限被拒绝。这是我尝试运行的代码。
#include <stdio.h>
#include <mpi.h>
int main (int argc,char *argv[])
{
int rank, size;
MPI_Init (&argc, &argv); /* starts MPI */
MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */
MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */
printf( "Hello world from process %d of %d\n", rank, size );
MPI_Finalize();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在主虚拟机上的共享文件夹中编译了它。我还生成了 ssh 密钥并将其复制到所有从属虚拟机。我有一个“主机”文件,其中包含所有虚拟机的所有 IP 地址,包括主虚拟机。
我用这个命令运行代码
`mpiexec -f hosts -n 4 hello_world
但我得到
===================================================================================
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= PID 2961 RUNNING AT 10.0.0.41
= EXIT CODE: 255
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
Permission denied, please try again.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
Permission denied, please try again.
Permission denied (publickey,password).
Run Code Online (Sandbox Code Playgroud)
顺便说一下,10.0.0.41 是主虚拟机。
提前致谢
use*_*853 -1
我想到了。我使用的是ubuntu,默认情况下不允许通过ssh进行root访问。因此,我需要在所有虚拟机中允许 root ssh 访问,然后生成 ssh 密钥并将其复制到每个通信虚拟机之间。
更详细的信息,以防有人遇到同样的问题。
我在所有虚拟机中执行了以下步骤
然后选择一个密码
编辑“PermitRootLogin without-password”>>>> 将其设置为“PermitRootLogin yes”
现在您可以使用 ssh-keygen 生成 ssh 密钥
并使用 ssh-copy-id -i root@remote 复制它
对集群中的每两台通信机器执行相同的操作。
我想提的另一件事是,我在执行 mpi 代码时犯了一个错误。
我使用了“mpiexec -f ports -n 4 hello_world”,我应该在可执行文件之前放置 ./ 。所以正确的命令应该是“ mpiexec -f ports -n 4 ./hello_world”
问候
| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |