使用Matlab实现算法较为简单,但是涉及for循环时,效率比不上C++。对于一个多核处理器,不开多核并行计算,实在是对不住Matlab自带的并行计算功能。parfor循环较为简单,但是它对for循环中的变量要求比较严格,稍有不慎就会出错(我深受其害)。使用Matlab Toolbox中的createJob/createTask可以实现多线程的并行计算,其功能与C++中CreateThread类似。这样的并行计算对函数中的变量要求就没有那么严格。
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);
w