各位技术牛人,我在自己使用Matlab parfor 并行处理时。 假设自己先封装写了个函数脚本,这个封装的函数脚本里面 使用了 嵌套for循环(连个够for 嵌套使用)。那么,现在在外面也需要使用for循环,来调用这个这个封装函数。 问题是,那么在外面调用封装函数的for循环,还可以采用parfor并行循环吗?。。
这个 SVM_class_NoSelection.m 封装函数,本身已经使用了两个for循环
各位技术牛人,我在自己使用Matlab parfor 并行处理时。 假设自己先封装写了个函数脚本,这个封装的函数脚本里面 使用了 嵌套for循环(连个够for 嵌套使用)。那么,现在在外面也需要使用for循环,来调用这个这个封装函数。 问题是,那么在外面调用封装函数的for循环,还可以采用parfor并行循环吗?。。
这个 SVM_class_NoSelection.m 封装函数,本身已经使用了两个for循环
matlab我用得少,我感觉应该是可以的吧。我在R里是可以的。你可以自己做个测试,比如,把要调用的函数写得简单一点,试试看能否得到预期的结果。另外,你也可以试试将函数里的for循环改成parfor看看结果如何。
谢谢师兄解答;
查了一些资料,应该可以我这种使用。https://blog.csdn.net/Winds_Up/article/details/110523295。
自己根据师兄的建议写个小脚本验证下,跑出来时一样的。。。
我个人理解是: 我在外面调用封装函数时,使用parfor循环,各个循环时独立的,即循环的某次迭代并不依赖于其他迭代(上次迭代)。所以应该是没有问题的。
自己写的小脚本验证如下: qiua.m 脚本,
function [a]=qiua(k)
a = zeros(k,k); % Preallocate matrix
for m = 1:k
for n = 1:k
a(m,n) = 1/(m+n -1);
end
end
end
在外部调用时的语句如下:
CoreNum=8; %???CPU???
if isempty(gcp(‘nocreate’)) %???
p=parpool(CoreNum);
end
bb=10;
target=cell(10,1);
parfor i=1:bb
a=qiua(i);
target{i,1}=a;
end
delete(gcp(‘nocreate’))
parpool close
还没开始学习使用R,师兄,有没有好的R的教程资料 推荐的
谈不上推荐,我自己学的时候看的是《R 语言编程艺术》(作者:Norman Matloff,译者:陈堰平等),这本书翻译还是不错的。我使用R也是比较浅层的,就是写写循环、调调函数而已。
谢谢师兄。后面找来看看