App掌控的可扩展低功耗异构并行计算系统

摘要:使用开源硬件树莓派及香蕉派和x86便携计算机,通过Linux平台运行定制的MPICH程序进行计算任务分配来实现可扩展的低功耗异构并行计算系统,并且使用Xcode配套开发了与系统相适应的移动App来实现计算系统的计划任务、状态监控、自定义命令执行、安全防护,实现对并行计算系统使用和控制。

关键词:树莓派 香蕉派 Linux 低功耗 并行计算 移动App

引 言

作为开源硬件的树莓派与香蕉派,是具有电脑所有基本功能的开源硬件。但如何运用这些开源硬件与x86计算机实现可扩展的低功耗异构并行计算系统呢?本着创客精神,我们决定利用这些设备自己做一个,同时为了能够更好的使用及控制此系统,我们还决定自主开发一个移动App。本系统硬件构成如图1所示。

图1

1 树莓派概述

树莓派如图2所示,是为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于Linux。它由注册于英国的慈善组织“Raspberry Pi 基金会”开发,Eben·Upton/埃·厄普顿为项目带头人。2012年3月,英国剑桥大学埃本·阿普顿正式发售世界上最小的台式机,又称卡片式电脑,外形只有 用卡大小,却具有电脑的所有基本功能,是目前国内创客使用率最高的开源硬件,。

此项目使用的是树莓派2B+型,硬件配置如下:

CPU:900MHz ARM Cortex A7(ARMv7架构)

GPU:Broadcom VideoCore IV @ 250 MHz

内存:1GB(同GPU共享)

存储:MicroSD卡

网络:10/100 Mbit/s Ethernet

2 香蕉派概述

香蕉派如图3所示是一款类似于树莓派的卡片式电脑,但相比树莓派,其性能更高、实用性更强,所以此次它被作为主控配合树莓派使用。

此次使用的香蕉派,硬件配置如下:

CPU:A20 HYPERLINK “http://bbs.elecfans.com/zhuti_arm_1.html" \t “_blank” ARM® Cortex™-A7双核

GPU:ARM Mali400 MP2 兼容 OpenGL ES 2.0/1.1

内存:1GB DDR3 (和GPU共享)

存储:SD卡 (最大64GB) / SATA接口可扩展到 2TB硬盘

网络:10/100/1000 RJ45以太网 (可选USB WIFI Dongle)

3 实现方法

将两块树莓派2B+和一块香蕉派以及一台x86计算机通过局域网连接到一起,

运行定制的MPICH程序进行任务分配,

实现异构并行计算功能

使用Xcode开发与系统相适应的移动App来使用和控制并行系统。

4 软件程序设计

4.1同构运算的实现

在ARM架构的树莓派上安装Raspbian(一个基于Linux的Debian完整操作系统)。将系统完整烧录到SD卡之后安装到树莓派上,连接电源,启动树莓派,登录账号:pi,密码:raspberry。系统进入到命令行模式。之后,将树莓派的Raspbian系统移植到香蕉派上,操作方法同上。然后依次执行如下操作:

1、安装Fortran语言:

sudo apt-get install gfortran

2、建立一个目录来放置MPI源代码:

mkdir /home/pi/mpich3

cd ~/mpich3

3、从MPICH官网获取最新的稳定版本:

wget http://www.mpich.org/static/downloads/3.1.4/mpich-3.1.4.tar.gz

4、压缩:

tar zvxf mpich-3.1.4.tar.gz

5、更新MPICH3的增量的版本,新建mpich3-install文件夹来放置编译文件,这可以让我们清楚系统中新增了哪些东西:

sudo mkdir /home/rpimpi/

sudo mkdir /home/rpimpi/mpich3-install

6、配置构建:

sudo /home/pi/mpich-3.1.4/configure –prefix=/home/rpimpi/mpich3-install

7、编译及安装文件:

sodo make

sodo make install

8、把MPICH程序的路径永久地加入PATH,编辑.profile文件并在底部添加以下命令:PATH=”$PATH:/home/rpimpi/mpich3-install/bin”

9、检查安装是否成功:

which mpicc

which mpiexec

10、单个节点上测试MPI是否工作:

从当前目录返回到home(cd ~).新建一个名为machinefile的文本文档,在里面输入树莓派的IP地址,测试MPI是否工作:

mpiexec -f machinefile -n <number> hostname

测试C代码。在编译的MPI的子目录中,用examples文件夹中的CPI程序来计算圆周率的值:

mpiexec -f machinefile -n 1 ~/mpich-3.1.4/examples/cpi

11、关闭PI(sudo poweroff),取出SD卡,制作映像文件wheezyfaspbian_backup_mpi.master.img并备份到PC中。

12、把wheezyfaspbian_backup_mpi.master.img映像文件写入到新的CD卡上,把张卡插入到第二台树莓派中并启动它。

13、利用RSA加密验证登录其他的节点。

在主节点上:

cd –

ssh-keygen –t rsa –C “lone-wolf-sc”

设置一个缺省位置(home/pi/.shh/id_rsa)来储存密钥。

接下来,复制密钥到树莓派:

cat ~/.ssh/id_rsa.pub | ssh HYPERLINK “mailto:pi@192.168.1.164” pi@192.168.1.164 “mkdir .ssh;cat >> .ssh/authorized_keys”

登录到第二个节点上输入:

ls –al ~/.ssh

sudo reboot

14、在主节点上的machinefile文件中输入二号节点的IP地址

主节点上执行:

mpiexec –f michinefile –n 2 ~/ mpich-3.1.4/examples/cpi

可以看到两个Pi节点已成功进行了运算。

香蕉派上的操作同上。到此我们搭建好了具有三个节点的并行计算系统。其中之一节点运行界面如图4所示。

4.2异构运算的实现

我们使用x86架构的笔记本电脑配合基于Linux内核的Deepin OS来搭建异构节点。构建过程如下:

1、打开深度终端,输入:

sudo apt-get install gfortran

2、下载mpich的源代码

wget http://www.mpich.org/static/downloads/3.1.4/mpich-3.1.4.tar.gz

解压tar zvxf mpich-3.1.4.tar.gz

进入刚刚解压的文件夹

cd mpich-3.1.4.tar.gz

3、进行预编译

mkdir mpich3-install

sudo /home/pi/mpich-3.1.4/configure –prefix=/home/pi/mpich3-install

4、编译

sudo make

sudo make install

5、将mpich程序路径添加至环境变量

PATH=”$PATH:/home/pi/mpich3-install/bin”

6、在主节点上执行:

cat ~/.ssh/id_rsa.pub | ssh pi@192.168.1.166 “mkdir .ssh;cat >> .ssh/authorized_keys”

7、回到异构节点,输入:

ls –al ~/.ssh

sudo reboot

8、在主节点上的machinefile文件中添加异构计算节点的IP地址

异构运算平台搭建完成,系统正常运行后如图5所示

图5

5 移动端App的设计与制作

1、为了能更好地使用和控制并行计算平台,我们利用Xcode亲自动手设计制作了一款iOS平台的客户端软件,软件运行界面如图6所示:

图6

2、部分程序代码如图7所示:

图7

3、利用这款软件实现以下几点功能:

①、计划任务

把要执行的任务添加至备忘录,定时提醒。

②、状态监控

利用手机客户端在联网状态下任意地点实时查看并行计算平台的运行情况如图8所示。

③、自定义命令执行

调用ssh通道远程执行任意命令来控制并行计算平台。

④、安全防护

为了加强安全保障,我们还为这款软件设计了运行密码,防止他人利用软件执行恶意命令损坏并行计算平台,如图9所示。

6 待改进的地方

1、将异构计算实现的平台改为MIPS架构的开源硬件

2、使用定制的操作系统使性能最大化

结语

该项目借助开源硬件和Linux操作系统实现了异构并行计算系统,同时为了提高平台的可用性,我们还利用Xcode定制开发了移动App。此平台具有低成本,低功耗和易于扩展的特性适合于并行计算系统的演示教学和实验室的少量数据处理,在并行计算展示及教学演示方面具有很高的应用价值和推广意义。

参考文献

弓雷. ARM嵌入式Linux系统开发详解(第2版)2010(1):448–466

Eben Upton,Gareth Halfacree. RaspberryPi用户指南 2013(8):137–185