Well I made it into a minimal test-case, but I still don't understand
what's happening:
Run_Boot_code.jl:
parm = rand(10,10)
M = { parm[i,:] for i in 1:2} # size(parm,1)}
require("Boot_code.jl")
pmap(myfun,M)
Boot_code.jl:
using Devectorize
function myfun(pam)
println("Entering myfun")
foo = ones(5)
@devec x = sum(foo)
println("exiting myfun")
return x
end
And then run with ``julia -p 4 Run_boot_code.jl`` to the tune of:
fatal error on fatal error on 2: 3: ERROR: `convert` has no method matching
> convert(::Type{Int64...}, ::Int64)
> ERROR: `convert` has no method matching convert(::Type{Int64...}, ::Int64)
> Worker 2 terminated.
> Worker 3 terminated.
It seems dependent on Devectorize's @devec macro, pmap across several Julia
processes, and that particular form of matrix slicing being used as input
(eg: if the parm[i,:] part is exchanged with ones(5), then it works fine).
It also works for me on 0.4 master, but not on 0.3.6.
On Saturday, March 14, 2015 at 10:19:08 PM UTC-5, Maxwell wrote:
>
> Hello folks,
>
> This is a re-post from my previous post earlier in the week. My code
> was referring t a non-existent file. I am attaching the code I am using
> since I have no idea what part of the code is producing errors in Julia
> 0.3.6.
>
>
> I am trying to run a little bootstrap in Julia using pmap and I am getting
> the following error:
>
>
> fatal error on fatal error on 5: 6: ERROR: `convert` has no method
> matching convert(::Type{Int64...}, ::Int64)
> ERROR: `convert` has no method matching convert(::Type{Int64...}, ::Int64)
> Worker 6 terminated.
> Worker 5 terminated.
>
> julia> versioninfo()
> Julia Version 0.3.6
> Platform Info:
> System: Linux (x86_64-redhat-linux)
> CPU: Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz
> WORD_SIZE: 64
> BLAS: libopenblas (DYNAMIC_ARCH NO_AFFINITY Sandybridge)
> LAPACK: libopenblasp.so.0
> LIBM: libopenlibm
> LLVM: libLLVM-3.4.2
>
> backtrace()
> 3-element Array{Ptr{None},1}:
> Ptr{Void} @0x0000003c90c7ed25
> Ptr{Void} @0x0000003c90c7ed80
> Ptr{Void} @0x00007fbf138f4010
>
>
> However, when I run the same code on my personal computer in Julia 0.3.3
> it works fine:
>
> julia> include("Run_Boot_code.jl")
>
> Warning: could not import Base.add! into NumericExtensions
> Warning: could not import Base.add! into NumericExtensions
> From worker 2: Done!
> From worker 3: Done!
> Done!!
> 2x12 DataFrame
> | Row | n1 | n2 | p | k | m | kap0 | pct | mu | Log_bay |
> pos |
>
> |-----|------|------|-------|-----|------|------|-----|-----|----------|-----|
> | 1 | 50.0 | 50.0 | 200.0 | 0.0 | 24.0 | 0.1 | 1.0 | 1.0 | -58.5275 |
> 0.0 |
> | 2 | 50.0 | 50.0 | 200.0 | 1.0 | 24.0 | 0.1 | 1.0 | 1.0 | -58.2967 |
> 0.0 |
>
> | Row | stron | ver_strg |
> |-----|-------|----------|
> | 1 | 0.0 | 0.0 |
> | 2 | 0.0 | 0.0 |
>
> julia> versioninfo()
> Julia Version 0.3.3
> Commit b24213b* (2014-11-23 20:19 UTC)
> Platform Info:
> System: Windows (x86_64-w64-mingw32)
> CPU: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz
> WORD_SIZE: 64
> BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
> LAPACK: libopenblas
> LIBM: libopenlibm
> LLVM: libLLVM-3.3
>
>
>
> However, running the code for one case works just perfectly on both
> version. I am been scratching my head about this for few days now. Any help
> will be greatly appreciated.
>
>
> Find attached my code. Sorry about the length of my code.
>
> Thanks.
>