我在MatLab中使用并行计算工具箱。
任务
我有一个矢量v。我有4个核心。 我想在每个核心上拆分向量(因此每个核心处理向量的1/4,假设长度(v)可被4整除)并在每个部分上应用函数f()。
所以核心1: f1 = f(v属于第1部分)
和核心2: f2 = f(v属于第2部分)
等等。
然后我想收集结果,以便在此之后我有: f =“包含f1的所有元素的一个向量,以及f2的所有元素等” 在主核心上(如果你愿意,可以使用root,也许MatLab称之为“客户端”,但我不确定)。
尝试
testEJBContainer = EJBContainer.createEJBContainer();
并吗
这不能按预期工作。我确实得到了正确的f大小,但不知怎的,似乎发生了“lpv”与每个核心相同的部分。但我不确定这是不是问题。
帮助吗
我没有做过很多MatLab并行编程。我将如何完成任务?
答案 0 :(得分:0)
我认为您的代码非常接近,但我认为您不需要f_tmp
。这是一个例子:
v = 1:10;
spmd
v_dist = codistributed(v);
lpv = getLocalPart(v_dist);
f1 = sqrt(lpv);
v2 = codistributed.build(f1, getCodistributor(v_dist));
end
assert(isequal(gather(v2), sqrt(v)));