【云计算实验】测试MPI环境

1、将主节点公钥发送给其他节点

登录主节点

ssh raspi00

生成公钥

输入以下:ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa ,按回车

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

批量发送

运行脚本文件run.sh

vim run.sh
for ip in $(cat /root/ip.txt)
do
        echo "=======Batch the file to the host $ip=========="
sshpass -p123456  ssh-copy-id  $ip    #-p选项后跟的是要拷贝主机的密码
        echo  -e "##########################END##########################\n"
done

测试

sh run.sh

在这里插入图片描述

2、测试MPI环境

编译

mpic++ -o hello_mpi hello_mpi.cpp

发送可执行文件至其他节点

../scripts/cluster-cptonodes hello_mpi raspihostfile5

../scripts/cluster-cptonodes是已经写好的脚本文件,以raspi00为主节点,如下如所示。
在这里插入图片描述
raspihostfile5如下所示:
在这里插入图片描述

执行

mpirun -np 20 --hostfile raspihostfile5 hello_mpi

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
利用MPI编写C语言输出云计算的程序可以分为以下几个步骤: 1. 导入MPI库 在程序开头导入MPI库,包括mpi.h头文件和MPI_Init()、MPI_Comm_size()、MPI_Comm_rank()、MPI_Finalize()等函数。 2. 初始化MPI环境 调用MPI_Init()函数初始化MPI环境,创建一个MPI_COMM_WORLD通信器。 3. 获取进程数量和当前进程编号 调用MPI_Comm_size()函数获取当前MPI_COMM_WORLD通信器中进程的数量,调用MPI_Comm_rank()函数获取当前进程在MPI_COMM_WORLD通信器中的编号。 4. 计算云计算结果 根据需要计算的云计算任务,编写相应的计算代码。 5. 将计算结果发送到主进程 如果当前进程不是主进程,将计算结果发送到主进程。调用MPI_Send()函数将计算结果发送给主进程。 6. 主进程接收计算结果 如果当前进程是主进程,使用MPI_Recv()函数接收各个进程发送的计算结果,并将它们合并成最终结果。 7. 结束MPI环境 调用MPI_Finalize()函数结束MPI环境。 下面是一个简单的利用MPI编写C语言输出云计算的示例代码: ``` #include <stdio.h> #include <mpi.h> int main(int argc, char** argv) { int rank, size, result; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); // 计算云计算结果 result = rank * 2; if (rank == 0) { int i; int total = result; for (i = 1; i < size; i++) { MPI_Recv(&result, 1, MPI_INT, i, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); total += result; } printf("The final result is %d.\n", total); } else { MPI_Send(&result, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); } MPI_Finalize(); return 0; } ``` 这个程序中,每个进程计算自己的云计算结果,然后将结果发送给主进程。主进程接收各个进程发送的结果,并将它们相加得到最终结果。在实际应用中,可以根据需要修改计算代码和通信方式来实现更复杂的云计算任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoetu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值