Let’s suppose in a distributed computing task, for each worker or process we’d like to compute some data (for example in the form of a matrix
A) which might or might not be unique for that worker and will be useful later for further computations.
A is relatively inexpensive to compute but expensive to send across processes, in that sense we want to store the data as a local variable in the remote worker.
To my understanding
remotecall use the computing power of the workers, but without affecting their workspace. In
@spawnat workers() A = rand(2,2),
A is not stored in
workers(). To do so, the
@everywhere macro is a candidate for the job.
@everywhere workers() A = rand(2,2)
Then problem I find then is how to invoke
A for computations (say
A*b with a local vector
remotecall read only local variables.
@everywhere let’s us invoke
A into the computation
b = rand(2) @everywhere workers() x = A*$b
But how should then the
x’s be fetched back? I thought through a RemoteChannel, but I couldn’t set one up.