Matlab并行计算示例(一)
2015-03-25 14:42
295 查看
使用Matlab实现算法较为简单,但是涉及for循环时,效率比不上C++。对于一个多核处理器,不开多核并行计算,实在是对不住Matlab自带的并行计算功能。parfor循环较为简单,但是它对for循环中的变量要求比较严格,稍有不慎就会出错(我深受其害)。使用Matlab Toolbox中的createJob/createTask可以实现多线程的并行计算,其功能与C++中CreateThread类似。这样的并行计算对函数中的变量要求就没有那么严格。
Matlab 2010和2014的调用函数略有差异,下面列出分别列出一个示例。
1、Matlab 2010
2、Matlab 2014
上面两个示例实现的是同一个功能,即并行计算两个向量的最小元素。开头和最后的对象声明和结果提取使用的函数不同,中间创建任务的函数基本相同。对较少的任务,并不能节省很多时间,有时反而会增加时间开销;但是当任务较多时,并行计算就会体现出它的优势,充分利用多核CPU。
Matlab 博大精深,createJob/createTask只是Matlab并行计算中很小的一部分,还有诸如:parfor, batch, spmd, 这些还没有仔细研究过,有时间需要进一步深入学习。
【参考文献】:
1、/article/1820851.html
2、http://wenku.baidu.com/view/d2db68da6f1aff00bed51ecf.html
官方文档:
3、入门版
4、详细版
Matlab 2010和2014的调用函数略有差异,下面列出分别列出一个示例。
1、Matlab 2010
slave_num = 2; jm = findResource; jm.DataLocation = './cache'; if ~isempty(jm.jobs) destroy(jm.jobs) end if ~exist(jm.DataLocation, 'file') mkdir(jm.DataLocation) end sub_list = cell(2, 1); sub_list{1} = [2, 1]; sub_list{2} = [3, 4]; job = createJob(jm, 'PathDependencies', {jm.DataLocation}); for i = 1:slave_num createTask(job, @min, 1, {sub_list(i)}); end submit(job); waitForState(job, 'finished'); destroy(job);
2、Matlab 2014
clear all, close all, clc, slave_num = 2; c = parcluster(); % Create cluster object job = createJob(c); sub_list = cell(2, 1); sub_list{1} = [2, 1]; sub_list{2} = [3, 4]; for i = 1:slave_num createTask(job, @min, 1, {sub_list(i)}); end submit(job); wait(job); out = fetchOutputs(job);
上面两个示例实现的是同一个功能,即并行计算两个向量的最小元素。开头和最后的对象声明和结果提取使用的函数不同,中间创建任务的函数基本相同。对较少的任务,并不能节省很多时间,有时反而会增加时间开销;但是当任务较多时,并行计算就会体现出它的优势,充分利用多核CPU。
Matlab 博大精深,createJob/createTask只是Matlab并行计算中很小的一部分,还有诸如:parfor, batch, spmd, 这些还没有仔细研究过,有时间需要进一步深入学习。
【参考文献】:
1、/article/1820851.html
2、http://wenku.baidu.com/view/d2db68da6f1aff00bed51ecf.html
官方文档:
3、入门版
4、详细版
相关文章推荐
- 【高性能】Matlab的并行计算之parfor
- matlab 并行计算
- Matlab 数值计算小示例。主要为牛顿迭代法、LU分解法、拉格朗日插值、牛顿插值法
- [MATLAB]The MathWorks为并行应用程序、多线程计算和64位平台提供关键功能
- MATLAB分布式并行计算环境(三) (转自高山流水)
- 如何利用MATLAB并行计算缩短程序运行时间
- matlab实现约束优化——并行计算
- matlab 并行计算使用心得 (不断补充)
- 并行计算的问题---Failed to open matlabpool
- Matlab高性能编程——代码优化和并行计算
- matlab 集群并行计算~
- 科学计算 | Matlab 使用 GPU 并行计算
- 润乾集算报表利用并行计算提高JDBC取数性能示例
- MATLAB并行计算工具箱使用
- 【高性能】Matlab的并行计算之spmd
- matlab练习程序(并行计算)
- Tiny并行计算框架之复杂示例
- matlab 高性能并行计算之 spmd
- matlab并行计算
- Tiny并行计算框架之复杂示例