简单的matlab分布式计算

    matlab的分布式计算可以理解为一台机器作为client(主控机),其他的机器分别作为计算的结点,要由client进行控制和操作。如果把单机上的.m文件直接放到client运行,是不会产生分布式计算的效果的,只相当于在主控机进行了计算,而其他的结点都还处于闲置状态。要想使用所有的结点或者部分结点进行计算,必须使用findResource()找到可利用的闲置cpu,使用createJob()创建工作,再使用createTask()为工作分配一个或多个任务,最后提交工作,这样,计算任务才分配到各个结点上。

    分布式计算的环境是需要配置的,但是我使用的环境是学院的刀片机,已经被配置好了,运行的时候直接用ssh或者xmanager 登陆,所以对这一部分不了解。假设环境已经配置好了,想要进行分布式计算,一般写一个主函数,进行分布式计算的资源分配下发任务。

    举例来说,如果要调用FunA和FunB(一般FunA和FunB是相互独立的),并且FunA要调用目录下的sub_floderA文件夹,FunB要调用目录下的sub_floderB文件夹,则把FunA、FUnB、sub_floderA、sub_floderB都拷贝到主控机的matlab的工作目录下,在这个目录下再建立main.m(当然也可以是其他名字),假设当前控制机的matlab的工作目录是 ”/hpc/home/myTask“,则main.m应如所示:


clear;clc;
sched = findResource(); 
%findResource默认可以无参,让matlab自己去找可用的资源,但最好自己分配一下,
%也可以调用已有的配置文件
job=createJob(sched);

%将当前工作所需要的目录及文件拷贝至各个结点,如果想调用自定义的函数,这一步几乎是必须的。
set(job,'FileDependencies',{'/hpc/home/myTask/sub_f

你可能感兴趣的:(Matlab)