You’ll need to evaluate the type definition on all processes, using the 
macro 

@everywhere type parms
    ...
end

*after* adding the worker process. If I do that, I can run your code 
without error. (However, k seems to be unchanged - you might have to use a 
DArray (distributed array) in order to get the changes back to the main 
thread…)

// T
On Tuesday, June 17, 2014 12:27:52 PM UTC+2, Jon Norberg wrote:

I have: 
>
> type parms
>   r::Float64
>   K::Float64
> end
>
> k=Array(parms,20)
>
> for i =1:20 k[i]=parms(1.1,2.2) end
>
> addprocs(1)
>
> nprocs() -> 2
>
> @parallel for i=1:20 k[i].r=2.0 end
>
> gives error:
>
> julia> @parallel for i=1:20 k[i].r=2.0 end
> fatal error on 2:
> julia> ERROR: parms not defined
>  in deserialize at serialize.jl:470
>  in handle_deserialize at serialize.jl:327
>  in deserialize at serialize.jl:398
>  in handle_deserialize at serialize.jl:327
>  in deserialize at serialize.jl:310
>  in anonymous at serialize.jl:330
>  in ntuple at tuple.jl:30
>  in deserialize_tuple at serialize.jl:330
>  in handle_deserialize at serialize.jl:322
>  in deserialize at serialize.jl:368
>  in handle_deserialize at serialize.jl:327
>  in deserialize at serialize.jl:310
>  in anonymous at serialize.jl:330
>  in ntuple at tuple.jl:30
>  in deserialize_tuple at serialize.jl:330
>  in handle_deserialize at serialize.jl:322
>  in deserialize at serialize.jl:368
>  in handle_deserialize at serialize.jl:327
>  in anonymous at task.jl:835
> Worker 2 terminated.
>
> Do I need to share the k array or somehow let the parallel code know how 
> to handle an array of type parms?
>
> Thanks for any help here!
>
> Jon
>
​

Reply via email to