试图理解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
Run Code Online (Sandbox Code Playgroud)
朱莉娅信息:
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)
Run Code Online (Sandbox Code Playgroud)
[编辑:更多信息]另外,如果有帮助的话,这似乎在运行中发生得很好——第一组并行运行的输出看起来像是被保存到磁盘上,所以这不是立即崩溃,而是发生在运行结束或第二组执行开始时。
nic*_*_eu 11
好的,所以我终于在高层次上弄清楚了这意味着什么:
这是当并行工作线程之一遇到错误时出现的错误。特定的错误语言 ( EOFError: read end of file) 并不具有任何实际意义。stackoverflow 中对 和 的引用仅与概述任务和工作人员之间的消息传递read有关。io
就我而言,错误是内存溢出,导致任务管理器终止工作线程。