Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Sharing big data across parfor or spmd
Replies: 8   Last Post: Aug 6, 2013 4:48 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Haoran Xu

Posts: 6
Registered: 10/21/11
Re: Sharing big data across parfor or spmd
Posted: Dec 16, 2012 6:47 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Hi! I have the same problem.
When I tried using
"spmd
M = <big data>;
end"
the program ends in error.
I suspect it is because big data too big (over 2.5G) for spmd.
Do you know any solutions?
Thanks!
Edric M Ellis <eellis@mathworks.com> wrote in message <ytwy5h3d5q1.fsf@uk-eellis0l.dhcp.mathworks.com>...
> "Chuck37 " <chuck3737@yahooremovethis.com> writes:
>

> > I have a big piece of never changing data that I'd like to be used by
> > all the workers in a parallel setting. Since I'm only working with
> > local workers, I don't understand why I have to eat the huge latency
> > associated with transferring the data to workers each time the parfor
> > loop is called. Can someone explain?
> >
> > I tried to use spmd to send data once at the beginning and have it
> > stay there, but the data is kind of big (~2 GB going to 10 workers),
> > and I got "error during serialization" anyway. Is there a solution to
> > this problem with local workers where they can all access the data
> > from the same memory? Accesses are infrequent, so simultaneous access
> > shouldn't cause a big slowdown.
> >
> > Any ideas would be great.
> >
> > My setup is something like this by the way:
> >
> > M = big data;
> > for x = 1:m
> > stuff
> > parfor y = 1:n
> > a(y) = function(M,a(y));
> > end
> > stuff
> > end
> >
> > Parfor is presently worse than 'for' because of the overhead from sending M every time.

>
> You could use my worker object wrapper which is designed for exactly
> this sort of situation. See
>
> <http://www.mathworks.com/matlabcentral/fileexchange/31972-worker-object-wrapper>
>
> In your case, you could use it like this:
>
> spmd
> M = <big data>;
> end
> M = WorkerObjWrapper(M);
>
> for ...
> parfor ...
> a(y) = someFunction(M.Value, ...);
> end
> end
>
> By building M on the workers directly and building the WorkerObjWrapper
> from the resulting Composite, the data is never actually transmitted
> over the wire at any stage, so you should experience no problems with
> the current 2GB transfer limit.
>
> Cheers,
>
> Edric.




Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.