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的运行状态,返回运行结果