matlab并行计算
2015-12-10 12:35
507 查看
用到的库函数
matlabpool
打开并行计算池tic , toc
计时,作为测试用parafor
并行计算的循环方式代码
定义一个耗时的函数如下
function A_cost( n ) pause(n) fprintf('A_cost execute finished,cost %d senconds!!\n',n); end
编写测试代码如下
%% init clc,clear close all matlabpool('open' , 2); % open %% general tic; for ii = 1:5 A_cost(ii); end t1 = toc; fprintf('general iter cost %f seconds in sum\n' , t1); %% parallel test tic; parfor ii = 1:5 A_cost(ii); end t1 = toc; fprintf('parallel cost %f seconds in sum\n' , t1); matlabpool('close'); % close
结果如下
注意
并行计算池打开相关
我的电脑只能打开2个并行计算池,不同的电脑应该不一样,打开的个数超过限制时,matlab会报错并提醒循环相关
在parfor的循环过程中,不能对循环变量进行重新赋值,否则会提示错误多次对某个值重写时,最终运行结束该值为0,如下面的程序
matlabpool('open' , 2); tic; parfor ii = 1:5 %ii = A_cost(ii); % will cause error %test = ii + A_cost(ii); % test will not change test = A_cost(ii); % test will change end t1 = toc; fprintf('parallel cost %f seconds in sum\n' , t1); matlabpool('close');
而下面的程序运行结束之后test为[1,2,3,4,5]
matlabpool('open' , 2); tic; parfor ii = 1:5 %ii = A_cost(ii); % will cause error %test = ii + A_cost(ii); % test will not change test(ii) = A_cost(ii); % test will change end t1 = toc; fprintf('parallel cost %f seconds in sum\n' , t1); matlabpool('close');
相关文章推荐
- matlab-sptensor
- 数值积分
- 最小二乘法及其应用
- MATLAB boxplot 字体位置调整以及图片保存问题
- MATLAB imshow 减少空白的方法
- 用matlab对信号进行傅里叶变换
- matlab凸优化工具箱——cvx简介
- 算法库:Matlab与C++混合编程
- matlab安装libSVM
- 关于JAVA调用Matlab遇到的问题+JDK重装后原有项目报错的解决办法
- Matlab的mapminmax函数说明
- matlab 实践程序5——批量将图片转移文件夹
- Java和MATLAB混合编程,Java调用MATLAB代码
- 如何在python中读写和存储matlab的数据文件(*.mat)
- Matlab将多幅图片保存为mat
- 解决matlab字符串中带引号,需要转义
- PCA 降维算法详解 及 MATLAB实现。
- 数字图像处理作业之MATLAB操作现象思考
- Matlab的libsvm的安装
- 多图片平均法降噪