You mean turning all arrays into SharedArrays, rather than just the result array? My understanding was that SharedArrays are only needed if the remote processes have to write on them, while regular Arrays are the way to go if the functions called on the remote processes simply read from them.
Allocating the grids as agrid = SharedArray(Float64, 4, pids=procs()) agrid[:] = linspace(1,4,4) didn't change the results at all (a few more bytes allocated and timings within 0.1s of the earlier attempt), so it seems at least for this example there's no benefit from declaring SharedArrays.
