c - 当我尝试运行 mpi 示例时权限被拒绝

标签 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;
}

我在共享文件夹中的主虚拟机上编译了它。我还生成了 ssh key 并将其复制到所有从属虚拟机。我有一个“主机”文件,其中包含所有虚拟机的所有 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).

顺便说一句,10.0.0.41 是主 VM。

提前致谢

最佳答案

我想通了。 我使用的是 ubuntu,它默认不允许通过 ssh 进行 root 访问。因此,我需要在所有虚拟机中允许 root ssh 访问,然后生成一个 ssh key 并将其复制到每个通信虚拟机中。

更多细节,以防有人遇到同样的问题。

我在所有虚拟机中执行了以下步骤

根密码

然后选择一个密码

密码-u root

vim/etc/ssh/sshd_config

编辑“PermitRootLogin without-password”>>>> 使其成为“PermitRootLogin yes”

服务ssh重启

现在您可以使用 ssh-keygen 生成 ssh key

并使用 ssh-copy-id -i root@remote 复制它

对集群中每两台正在通信的机器执行相同的操作。

我想提的另一件事是,我在执行 mpi 代码时犯了一个错误。

我使用了'mpiexec -f hosts -n 4 hello_world'我应该把./放在可执行文件之前。所以正确的命令应该是 ' mpiexec -f hosts -n 4 ./hello_world'

问候

关于c - 当我尝试运行 mpi 示例时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36145966/

相关文章:

c - 解析文件中的一行

c - 使用 Struct 加载和打印文件 - 借助 C 语言编程

c - 我的 itoa 转换出了什么问题?

python - Windows 和 LInux 上的 USB 设备/PyUSB 表现不同

multithreading - Flutter Dart : How can we achieve multithreading like python or java in dart

c++ - 如何找到 MPI 消息截断错误的来源?

linux - 如何使用uniq命令进行排序以删除第一个字符和后面的n个字符

python - 401. "str' 对象没有属性 'read'

c# - TPL 数据流资源未发布

c# - 改进算法执行时间