Skip to content

Instantly share code, notes, and snippets.

@mfalt
Created March 3, 2022 12:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mfalt/401d6957405dbbd1a6e9be678d361d7c to your computer and use it in GitHub Desktop.
Save mfalt/401d6957405dbbd1a6e9be678d361d7c to your computer and use it in GitHub Desktop.
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