由于算法计算量太大,电脑单核的计算能力已经无法满足我的需求,于是我考虑用并行计算,使用matlab中提供的local调度器,配和parfor语句,很方便的在一台服务器上实现了8核并行计算,但是很快,我觉得光用一台电脑跑太有限,8核已经很高,而且local调度器上限是有的,现在好像最高12个线程。于是我转而考虑使用分布式计算。matlab提供一个jobmanager调度器,支持一个几十台电脑的小规模计算机集群。一些基本的,按部就班的东西我这里就不说了,看看说明就能懂,我想趁热打铁,把一些容易使人迷茫,出错的地方记录下来。
一、认真看matlab的帮助,特别是链接,一定要看,网页帮助要比本地帮助全很多。
网页帮助中有个pdf文件,会教你如何一步一步使用各种调度器建立计算机集群,这个文件在2011a的帮助中有。之前看的的2008b中没有。
二、matlab中jobmanager调度器所支持的架构
在一个计算机集群(本文中的计算机集群特指基于jobmanager调度器的计算机集群)中,存在三种角色的电脑,一种是cluster,一种是jobmanager,另一种是client。我现在的情况是这样,一台电脑充当cluster、jobmanager和client角色,其他电脑则只扮演cluster,所有电脑通过以太网协议连接。
cluster中通常跑上几个worker,数量一般和cup的核数一样,worker的任务就是完成jobmanager分配给他的计算任务。理论上这些个worker可以在jobmanager上远程建立和销毁。
jobmanager其实就是计算机上跑的一个程序,