使用dispy实现树莓派分布式计算

    技术2025-05-21  43

    使用dispy实现树莓派分布式计算

    欢迎阅读我的文章步骤1 为四个树莓派搭建网络步骤2 配置服务器树莓派步骤3 配置客户端树莓派步骤4 实验

    欢迎阅读我的文章

    你好! 这几个月我将分享我用树莓派做的一些项目,希望能对大家有所帮助。 这是项目1,这个项目我们来制作分布式集群计算机。其中需要用到4个树莓派。

    步骤1 为四个树莓派搭建网络

    具体怎么搭建路由器我就不说了。说说关键点。 确保路由器的IP地址是192.168.1.1。尽量不要用手机热点,亲测无法使用。

    步骤2 配置服务器树莓派

    安装dispy

    sudo pip3 install dispy

    安装psutil

    sudo pip3 install psutil

    其中dispy是一种分布式并行计算框架,可以通过在客户端写程序并在服务端执行。而dispy需要使用psutil获取服务器CPU的使用量。 再在/home/pi目录下,创建一个sh文件

    nano start_dispynode.sh

    内容为

    #!/bin/sh -e sleep 30 _IP=$(hostname -I) dispynode.py -i $_IP --daemon

    接着配置开机自动启动这个sh文件。 另外三个树莓派按同样方法进行配置。 也可以将需要配置的树莓派的SD卡进行格式化,在已配置好的树莓派上,插入SD卡(一个一个分开烧录,确保USB卡槽没有其他U盘),将整个系统克隆到已格式化的SD卡中。通过以下命令

    sudo dd bs=4M if=/dev/mmcblk0 of=/dev/sda

    步骤3 配置客户端树莓派

    安装dispy

    sudo pip3 install dispy

    下载nmap,让客户端可以查询到服务器的IP地址从而根据需要控制服务器的重启或关闭。

    sudo apt-get install nmap

    接着在终端/home/pi目录下下载客户端软件

    git clone https://github.com/raspberrypilearning/octapi-setup.git

    接下来通过nmap查询出连接到路由器的服务器IP

    nmap -sP 192.168.1.*

    接着输入如下命令建立ssh信赖密钥。

    ssh-keygen

    通过如下命令,使用ssh远程复制到对应IP的服务器,其中为你对应的服务器的IP地址

    ssh-copy-id -i ~/.ssh/id_rsa.pub <remote ip>

    客户端搭建完毕。

    步骤4 实验

    我们选择计算圆周率pi作为我们的计算目标,这次采用的方法是利用概率分布进行计算的。具体实现可查看代码。 在客户端树莓派终端,来到之前下载的client目录下,执行如下命令

    sudo python3 compute_pi_efficient.py 50000 2000

    我们这里规定每个任务需要产生50000个随机点,总共有2000个任务分配至服务端。当计算完毕时,总共是产生了50000*2000个点。 运行之后的大致结果如下图所示 由图可知我们的总用时是24.65s,计算过程中同时有12个cpu进行工作。 为了对比,我们需要修改这个程序,改为一个服务器进行计算,来体现出集群计算机计算的优势。 首先

    cp compute_pi_efficient.py compute_pi_single.py

    nano compute_pi_single.py

    找到server_nodes =‘192.168.1.*’,将其改为你所对应的具体服务器IP地址。 运行

    sudo python3 compute_pi_single.py 50000 2000

    结果如下 可以看出,分布式计算可以大大提高计算速度和空闲cpu的使用率。

    参考 https://projects.raspberrypi.org/en/projects/build-an-octapi https://github.com/raspberrypilearning/octapi-setup

    Processed: 0.012, SQL: 9