matlab两种不同模式的并行运算,matlab两种不同并行
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的执行状态,返回执行结果
我没有使用过并行工具箱,一般遇到运算时间太长的时候我就直接调C语言了,你这里面我也没有看见啥运算复杂度啊,怎么用并行工具箱?
至于你所描述的问题不是并行不并行的问题,是你怎么定义你的逻辑。
只要你有支持cuda的显卡就可以,很简单,类似M语言编程,你可以使用matlab的并行计算工具箱2010b才可以,或者使用gpumat,或者使用JACKET,可查看论坛www.matlabsky.com/forum-83-1.html,寻求帮助
评论暂时关闭