尝试在pmap
执行一些令人尴尬的并行任务时理解以下错误。在Linux服务器上运行。在写入HDF(并行调用的一部分)时可能正在发生,但我不这么认为,如果堆栈跟踪没有指向正在执行的用户函数中的行,并且对TCP的引用表明它是并行呼叫的一部分。已经发生了几次连续运行,所以不是一次性的侥幸。
Worker 139 terminated.
ERROR (unhandled task failure): EOFError: read end of file
Stacktrace:
[1] unsafe_read(::Base.AbstractIOBuffer{Array{UInt8,1}}, ::Ptr{UInt8}, ::UInt64) at ./iobuffer.jl:105
[2] unsafe_read(::TCPSocket, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:752
[3] unsafe_read(::TCPSocket, ::Base.RefValue{NTuple{4,Int64}}, ::Int64) at ./io.jl:361
[4] read at ./io.jl:363 [inlined]
[5] deserialize_hdr_raw at ./distributed/messages.jl:170 [inlined]
[6] message_handler_loop(::TCPSocket, ::TCPSocket, ::Bool) at ./distributed/process_messages.jl:157
[7] process_tcp_streams(::TCPSocket, ::TCPSocket, ::Bool) at ./distributed/process_messages.jl:118
[8] (::Base.Distributed.##99#100{TCPSocket,TCPSocket,Bool})() at ./event.jl:73
朱莉娅信息:
julia> versioninfo()
Julia Version 0.6.0
Commit 9036443 (2017-06-19 13:05 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Nehalem)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.9.1 (ORCJIT, westmere)
[编辑:更多信息]此外,如果它有用,这似乎发生在运行中 - 第一组并行运行的输出看起来像是保存到磁盘,所以这不是立即崩溃,但是在第二组执行结束或第二组执行开始时发生的事情。
答案 0 :(得分:2)
好的,所以我最终弄清楚这意味着什么:
这是其中一个并行化工作人员遇到错误时出现的错误。特定的错误语言(EOFError: read end of file
)并不意味着什么。 stackoverflow中对read
和io
的引用仅与概述任务和工作者之间的消息传递有关。
在我的情况下,错误是内存溢出导致任务管理器终止worker。