Created
March 3, 2022 12:28
-
-
Save mfalt/401d6957405dbbd1a6e9be678d361d7c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const LOCK = ReentrantLock() | |
function inference(imgs) | |
lock(LOCK) | |
try | |
out = nn(imgs) | |
return maximum(cpu(out)) | |
finally | |
unlock(LOCK) | |
end | |
end | |
### ERROR: | |
WARNING: Error while freeing DeviceBuffer(3.906 MiB at 0x000000030a95a000): | |
ErrorException("val already in a list") | |
Stacktrace: | |
[1] WARNING: Error while freeing DeviceBuffer(3.906 MiB at 0x0000000306de3200): | |
ErrorException("task switch not allowed from inside gc finalizer") | |
Stacktrace: | |
[1] error(try_yieldto(s::String) | |
@ undo::typeof(Base.ensure_rescheduled)) | |
@ Base ./Base ./task.jl:767error.jl:33 | |
[2] push! [2] | |
@ ./linked_list.jl:53 [inlined] | |
wait [3] _wait2(c::() | |
@ Base ./task.jl:837 | |
[3]Base.GenericCondition wait(c::Base.GenericCondition{Base.Threads.SpinLock}) | |
{Base.Threads.SpinLock}, waiter:: @ TaskBase ./condition.jl:123) | |
@ Base ./ [4] condition.jl:84 | |
lock(rl:: [4] wait(c::ReentrantLock) | |
@ Base.GenericCondition{Base.Threads.SpinLock}Base ./lock.jl:100 | |
[5] ) | |
@ Base ./condition.jl:120 | |
[5] lock(rl::ReentrantLock) | |
@ Base ./lock.jl:100 | |
[6] macro expansion | |
@ ./lock.jl:226 [inlined] | |
[7] macro expansion | |
@ ./lock.jl:226 [inlined] | |
[6] (::CUDA.var"#new_unique#10")(handle::Ptr{Nothing}) | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/lib/cudadrv/context.jl:42 | |
[8] current_context | |
@ ~/.julia/packages/CUDA/0IDh2/lib/cudadrv/context.jl:63 [inlined] | |
[9] (::CUDA.var"#new_unique#10")(handle::Ptr{Nothing}) | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/lib/cudadrv/context.jl:42 | |
[7] current_context | |
@ ~/.julia/packages/CUDA/0IDh2/lib/cudadrv/context.jl:63 [inlined] | |
[8] CUDA.CuStream(; flags::CUDA.CUstream_flags_enum, priority::Nothing) | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/lib/cudadrv/stream.jl:26 | |
[10] CuStream | |
@ ~/.julia/packages/CUDA/0IDh2/lib/cudadrv/stream.jl:18 [inlined] | |
[11] create_stream() | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/src/state.jl:379 | |
[12] stream | |
@ ~/.julia/packages/CUDA/0IDh2/src/state.jl:373 [inlined] | |
[13] active_state | |
@ ~/.julia/packages/CUDA/0IDh2/src/state.jl:107 [inlined] | |
[14] #_free#183 | |
@ ~/.julia/packages/CUDA/0IDh2/src/pool.jl:262 [inlined] | |
[15] macro expansion | |
@ ~/.julia/packages/CUDA/0IDh2/src/pool.jl:247 [inlined] | |
[16] macro expansion | |
@ ./timing.jl:299 [inlined] | |
[17] #free#182 | |
@ ~/.julia/packages/CUDA/0IDh2/src/pool.jl:246 [inlined] | |
[18] macro expansion | |
@ ~/.julia/packages/CUDA/0IDh2/src/array.jl:81 [inlined] | |
[19] macro expansion | |
@ ~/.julia/packages/CUDA/0IDh2/src/state.jl:182 [inlined] | |
[20] unsafe_free!(xs::CUDA.CuArrayCUDA.CuStream({Float32, 4, CUDA.Mem.DeviceBuffer}, stream::CUDA.CuStream) | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/src/array.jl:80 | |
[21] unsafe_finalize!(xs::CUDA.CuArray{Float32, 4, CUDA.Mem.DeviceBuffer}) | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/src/array.jl:101 | |
[22] enable_finalizers | |
@ ./gcutils.jl:123 [inlined] | |
[23] unlock(l::Base.Threads.SpinLock) | |
@ Base.Threads ./locks-mt.jl:92 | |
[24] unlockall | |
@ ./condition.jl:23 [inlined] | |
[25] wait(c::Base.GenericCondition{Base.Threads.SpinLock}) | |
@ Base ./condition.jl:121 | |
[26] lock(rl::ReentrantLock) | |
@ Base ./lock.jl:100 | |
[27] inference(imgs::CUDA.CuArray{Float32, 4, CUDA.Mem.DeviceBuffer}) | |
@ Main ~/knightvision/piece_recognition/KnightVisionServer/test/test_cuda.jl:17 | |
; flags[28] (::var"#5#6")() | |
@ Main ./threadingconstructs.jl:178 | |
::CUDA.CUstream_flags_enum, priority::Nothing) | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/lib/cudadrv/stream.jl:26 | |
[9] CuStream | |
@ ~/.julia/packages/CUDA/0IDh2/lib/cudadrv/stream.jl:18 [inlined] | |
[10] create_stream() | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/src/state.jl:379 | |
[11] stream | |
@ ~/.julia/packages/CUDA/0IDh2/src/state.jl:373 [inlined] | |
[12] active_state | |
@ ~/.julia/packages/CUDA/0IDh2/src/state.jl:107 [inlined] | |
[13] #_free#183 | |
@ ~/.julia/packages/CUDA/0IDh2/src/pool.jl:262 [inlined] | |
[14] macro expansion | |
@ ~/.julia/packages/CUDA/0IDh2/src/pool.jl:247 [inlined] | |
[15] macro expansion | |
@ ./timing.jl:299 [inlined] | |
[16] #free#182 | |
@ ~/.julia/packages/CUDA/0IDh2/src/pool.jl:246 [inlined] | |
[17] macro expansion | |
@ ~/.julia/packages/CUDA/0IDh2/src/array.jl:81 [inlined] | |
[18] macro expansion | |
@ ~/.julia/packages/CUDA/0IDh2/src/state.jl:182 [inlined] | |
[19] unsafe_free!(xs::CUDA.CuArray{Float32, 4, CUDA.Mem.DeviceBuffer}, stream::CUDA.CuStream) | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/src/array.jl:80 | |
[20] unsafe_finalize!(xs::CUDA.CuArray{Float32, 4, CUDA.Mem.DeviceBuffer}) | |
@ CUDA ~/.julia/packages/CUDA/0IDh2/src/array.jl:101 | |
[21] process_events | |
@ ./libuv.jl:104 [inlined] | |
[22] wait() | |
@ Base ./task.jl:838 | |
[23] wait(c::Base.GenericCondition{Base.Threads.SpinLock}) | |
@ Base ./condition.jl:123 | |
[24] lock(rl::ReentrantLock) | |
@ Base ./lock.jl:100 | |
[25] inference(imgs::CUDA.CuArray{Float32, 4, CUDA.Mem.DeviceBuffer}) | |
@ Main ~/knightvision/piece_recognition/KnightVisionServer/test/test_cuda.jl:17 | |
[26] (::var"#5#6")() | |
@ Main ./threadingconstructs.jl:178 | |
ERROR: LoadError: TaskFailedException | |
nested task error: schedule: Task not runnable | |
Stacktrace: | |
[1] error(s::String) | |
@ Base ./error.jl:33 | |
[2] schedule(t::Task, arg::Any; error::Bool) | |
@ Base ./task.jl:697 | |
[3] notify(c::Base.GenericCondition{Base.Threads.SpinLock}, arg::Any, all::Bool, error::Bool) | |
@ Base ./condition.jl:147 | |
[4] #notify#558 | |
@ ./condition.jl:141 [inlined] | |
[5] notify (repeats 2 times) | |
@ ./condition.jl:141 [inlined] | |
[6] unlock(rl::ReentrantLock) | |
@ Base ./lock.jl:132 | |
[7] inference(imgs::CUDA.CuArray{Float32, 4, CUDA.Mem.DeviceBuffer}) | |
@ Main ~/knightvision/piece_recognition/KnightVisionServer/test/test_cuda.jl:22 | |
[8] (::var"#5#6")() | |
@ Main ./threadingconstructs.jl:178 | |
...and 1 more exception. | |
Stacktrace: | |
[1] sync_end(c::Channel{Any}) | |
@ Base ./task.jl:381 | |
[2] top-level scope | |
@ task.jl:400 | |
in expression starting at /home/mattias/knightvision/piece_recognition/KnightVisionServer/test/test_cuda.jl:35 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment