So I got something working for my pylab example.
julia> import PyCall
julia> PyCall.@pyimport pylab
julia> @everywhere import PyCall
julia> @everywhere PyCall.@pyimport pylab
julia> @everywhere A = pylab.cumsum(collect(1:10))*1.
julia> fetch(@spawnat remotes[1] A)
10-element Array{Float64,1}:
1.0
3.0
6.0
10.0
15.0
21.0
28.0
36.0
45.0
55.0
No luck with the math module I'm afraid. Two different types of errors
depending on style:
julia> @spawnat remotes[1] PyCall.@pyimport math as pymath
RemoteRef{Channel{Any}}(2,1,305)
julia> fetch(@spawnat remotes[1] (pymath.sin(pymath.pi / 4) - sin(pymath.pi
/ 4)) )
ERROR: On worker 2:
UndefVarError: pymath not defined
in anonymous at multi.jl:1330
in anonymous at multi.jl:889
in run_work_thunk at multi.jl:645
in run_work_thunk at multi.jl:654
in anonymous at task.jl:54
in remotecall_fetch at multi.jl:731
[inlined code] from multi.jl:368
in call_on_owner at multi.jl:776
in fetch at multi.jl:784
julia> @everywhere PyCall.@pyimport math as pymath
julia> fetch(@spawnat remotes[1] (pymath.sin(pymath.pi / 4) - sin(pymath.pi
/ 4)) )
Worker 2 terminated.srun: error: mrc-bsu-tesla1: task 0: Exited with exit
code 1
ERROR: ProcessExitedException()
in yieldto at ./task.jl:67
in wait at ./task.jl:367
in wait at ./task.jl:282
in wait at ./channels.jl:97
in take! at ./channels.jl:84
in take! at ./multi.jl:792
in remotecall_fetch at multi.jl:729
[inlined code] from multi.jl:368
in call_on_owner at multi.jl:776
in fetch at multi.jl:784
ERROR (unhandled task failure): EOFError: read end of file
On Friday, October 30, 2015 at 1:28:21 AM UTC, Yakir Gagnon wrote:
>
> @Matthew: did you find a solution?
>
> On Tuesday, October 27, 2015 at 8:44:53 AM UTC+10, Yakir Gagnon wrote:
>>
>> Yea, right? So what’s the answer? How can we if at all do any PyCalls
>> parallely?
>>
>> On Monday, October 26, 2015 at 11:49:35 PM UTC+10, Matthew Pearce wrote:
>>
>> Thought I had an idea about this, I was wrong:
>>>
>>> ```julia
>>>
>>> julia> @everywhere using PyCall
>>>
>>> julia> @everywhere @pyimport pylab
>>>
>>> julia> remotecall_fetch(pylab.cumsum, 5, collect(1:10))
>>> ERROR: cannot serialize a pointer
>>> [inlined code] from error.jl:21
>>> in serialize at serialize.jl:420
>>> [inlined code] from dict.jl:372
>>> in serialize at serialize.jl:428
>>> in serialize at serialize.jl:310
>>> in serialize at serialize.jl:420 (repeats 2 times)
>>> in serialize at serialize.jl:302
>>> in serialize at serialize.jl:420
>>> [inlined code] from dict.jl:372
>>> in serialize at serialize.jl:428
>>> in serialize at serialize.jl:310
>>> in serialize at serialize.jl:420 (repeats 2 times)
>>> in serialize at serialize.jl:302
>>> in serialize at serialize.jl:420
>>> [inlined code] from dict.jl:372
>>> in send_msg_ at multi.jl:222
>>> [inlined code] from multi.jl:177
>>> in remotecall_fetch at multi.jl:728
>>> [inlined code] from multi.jl:368
>>> in remotecall_fetch at multi.jl:734
>>>
>>> julia> pylab.cumsum(collect(1:10))
>>> 10-element Array{Int64,1}:
>>> 1
>>> 3
>>> 6
>>> 10
>>> 15
>>> 21
>>> 28
>>> 36
>>> 45
>>> 55
>>>
>>> ```
>>>
>>
>>
>