Date: Jun 14, 2012 8:25 PM
Author: Benjamin
Subject: spmd and parfor with large broadcast variables


I'm new to the idea of parallel computing with matlab on a cluster. I understand that using broadcast variables, like

matlabpool 10
bigd = loadBigData(); % loads a large matrix of class double
r = zeros(100,1);
parfor ii = 1:100,
r(ii) = doSomething(ii,bigd);

causes a lot of extra network traffic. My first question is whether the variable bigd is sent over the network 10 times (i.e. once per lab) or 100 times (once per loop iteration).

If the answer is that the variable is broadcast 100 times, would it be possible to alleviate this by using spmd to create a copy of the broadcast variable locally on each worker? If so, how would I do that?