首页 > 代码库 > matlab两种不同模式的并行运算

matlab两种不同模式的并行运算

1、distributed job
     distributed job是一种比较简单的并行任务。假定用户需要完成一组作业,各个计算作业之间是独立的,而且相互之间不需要进行数据通信。这意味着各个作业的执行顺序不影响最终的执行结果。这种情况下可以采用distributed job完成此类作业。
     distributed job可以通过job manager(集群的scheduler)、local scheduler(单机的scheduler)或第三方的scheduler(pbs)执行。

创建distributed job的步骤如下:
1、创建scheduler对象
2、创建job
3、创建tasks
4、提交job至scheduler
5、获取job的执行结果

distributed job示例代码
clear all;
% 寻找资源。
jm = findResource('scheduler', 'type', 'jobmanager', 'name', 'mu01', 'LookupURL', '192.168.100.100');
% 使用刚才找到的资源建立一个distributed job
job = createJob(jm);
% 设置该工作的文件关联,让所有workers都可以找到原程序文件,需要在Client上设置共享文件夹。
set(job, 'PathDependencies', {'\\192.168.0.101\matlab_code\', '/mnt/'})
% 另一种方法,把用到的原程序文件传给所有workers。
% set(job, 'FileDependencies', {'hm.m'});
N = 5;
M = 4;
% 建立4个任务,每任务都是算hp(M, N)。
createTask(job, @hp, 1, {{M, N}, {M, N}, {M, N}, {M, N}});
% 提交工作给jobmanager。
submit(job)
% 等待所有workers都把任务做完。
waitForState(job, 'finished')
% 取出计算结果。
results = getAllOutputArguments(job);
% 销毁Job,释放资源
destroy(job);



2、parallel job
parallel job只包含1个task,而且此task必须在多个工作单元中同步执行。各个task之间可以进行数据通信。在matlab并行程序中,将执行parallel job的可以进行数据通信的通信单元称为lab,可以将lab视为一类特殊的worker。
     parallel job的各个工作单元执行的并行程序完全相同,但可以完成不同的功能。在parallel job并行程序中,可以获得并行程序执行的工作单元的编号以及工作单元的总数等信息。用户可以根据工作单元编号,为不同工作单元分配不同的计算任务。

创建parallel job的步骤:
1、创建或寻找scheduler
2、创建parallel job
3、创建task
4、提交job,等待job manager执行job
5、查看job的执行状态,返回执行结果

matlab两种不同模式的并行运算