基于树莓派进行分布式计算的示例
TRANSLATED BY AARONZHAO l 什么是分布式计算? 分布式计算就是将一个计算问题分解成并行的多个计算任务,并将这些任务分配到一个分布式系统网络内的多台计算机上。这种计算方式将使得在解决大型计算问题的时候可以集合多台计算机的计算能力来解决计算问题。 目前,世界上有很多允许全球计算机参与的分布式计算项目,这些项目设计很多领域,其中的很多项目已经进行了多年。这充分说明现在的计算任务可以有多大。 以下是几个例子: § Test4Theory (Physics)
Search for new fundamental particles at CERN's Large Hadron Collider. § Folding@Home (Molecular Biology)
Run simulations on the folding of proteins, which aid the study of diseasessuch as Alzheimer's, Huntington's,and many cancers. § QMC@Home (Chemistry)
Study the structure and reactivity of molecules using quantum chemistry and Monte Carlo techniques. § MindModelling@Home (Cognitive Science)
Use computational cognitive process modelling to better understand the mind. § MilkyWay@Home (Astronomy)
Create a highly accurate 3D model of the Milky Way galaxy. § Enigma@Home (Cryptography)
Break three original Enigma message which have not been broken. l 在两台树莓派上演示分布式计算 为了演示,将使用网线将两台树莓派连接起来,共同计算一个归并排序的问题。 首先,这是一个用python写好的归并排序算法。 MergeSort.py(代码见文章开始处链接) 接下来,是一个用来在一台树莓派上用归并排序计算100000个数的代码。 Merge1.py(代码见文章开始处链接),执行这个程序。 从结果中可以看到,在使用一台树莓派进行归并排序的情况下,整个排序过程将花费大约24秒。 现在,让我们将计算任务分配到两台树莓派上,首先我们需要分别设置好两台树莓派的IP地址。 我们首先设置第一台树莓派作为服务器,更改其IP地址,输入以下命令: sudo ifconfig eth0 192.168.1.1 broadcast192.168.1.255 netmask 255.255.255.0 接着将第二台树莓派作为客户端,更改其IP地址,输入以下命令: sudo ifconfig eth0 192.168.1.2 broadcast192.168.1.255 netmask 255.255.255.0 在第一台树莓派上运行以下程序: MergeServer.py(代码见文章开始处链接) 当“waiting for client…”出现的时候,在客户端树莓派上运行客户端程序: MergeClient.py(代码见文章开始处链接) 结果显示,归并排序的运行时间下降到了16秒左右。之所以运行时间不是之前单台树莓派计算归并排序耗时的一半是因为两台树莓派之间数据处理和传输会产生时间开销。如果使用一个交换机来连接更多的树莓派共同完成这个计算任务的话,程序运行时间将进一步缩短。 希望这个简短的教程可以让你对分布式计算的实现一窥究竟。事实上我们还有很多类似的分布式计算应用实例,也许你也可以在你的或朋友的树莓派上进行你的分布式计算项目!
由于发帖字数限制,具体代码不在此贴出,请见文章开头处链接的内容。
|