Tit*_*llo 6 parallel-processing matlab classification
我是关于matlab并行计算的新手.我有一个创建分类器(SVM)的函数,我想用几个数据集测试它.我有一个2核工作站,所以我想并行运行测试.有人可以解释我之间的区别:
dataset_array={dataset1, dataset2}
matlabpool open 2
spmd
my_function(dataset(labindex));
end
Run Code Online (Sandbox Code Playgroud)
和
dataset_array={dataset1, dataset2}
matlabpool open 2
parfor i:1=2
my_function(dataset(i));
end
Run Code Online (Sandbox Code Playgroud)
ang*_*nor 11
spmd是一个并行区域,而parfor是一个并行for循环.不同之处在于,在spmd区域,当您可以并行执行任务时,您具有更大的灵活性.您可以编写for循环,可以对分布式数组和向量进行操作.您可以编写整个工作流程,通常包含多个循环.这需要付出代价:您需要了解更多关于在线程中分发工作和数据的信息.例如,并行化循环需要在工作者之间明确划分循环索引范围(您在代码中使用labindex进行了划分),并且可能创建分布式数组.
另一方面,parfor只执行此操作 - 并行化for循环.自动并行化,你可以添加,所以工作由MATLAB分为工人.
如果您只想并行运行单个循环,然后在本地客户端上处理结果,则应使用parfor.如果要并行化整个MATLAB程序,则必须处理spmd和工作分配的复杂性.