Error using NaNMean in debugger
CMGreenspon opened this issue · comments
Hi,
Everything works when running the the REPL (in VSCode) but when using the debug mode it crashes.
`Exception has occurred: ErrorException
this intrinsic must be compiled to be called
Stacktrace:
[1] vle(p1::Core.LLVMPtr{Float64, 0}, p2::Core.LLVMPtr{Float64, 0})
@ VectorizationBase C:\Users\somlab.julia\packages\VectorizationBase\9edvL\src\strided_pointers\stridedpointers.jl:517
[2] vle(p1::Ptr{Float64}, p2::Ptr{Float64}, sp::VectorizationBase.OffsetPrecalc{Float64, 2, 1, 0, (1, 2), Tuple{Static.StaticInt{8}, Int64}, Tuple{Static.StaticInt{0}, Static.StaticInt{0}}, LayoutPointers.StridedPointer{Float64, 2, 1, 0, (1, 2), Tuple{Static.StaticInt{8}, Int64}, Tuple{Static.StaticInt{0}, Static.StaticInt{0}}}, Tuple{Nothing, Tuple{Int64, Int64}}})
@ VectorizationBase C:\Users\somlab.julia\packages\VectorizationBase\9edvL\src\strided_pointers\stridedpointers.jl:526
[3] turbo!(#unused#::Val{(false, 0, 0, 0, false, 4, 32, 15, 64, 32768, 262144, 16777216, 0x0000000000000001)}, #unused#::Val{(:numericconstant, Symbol("###0###7###"), LoopVectorization.OperationStruct(0x00000000000000000000000000000001, 0x00000000000000000000000000000000, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, LoopVectorization.constant, 0x0001, 0x00), Symbol(""), :∅, LoopVectorization.OperationStruct(0x00000000000000000000000000000001, 0x00000000000000000000000000000000, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, LoopVectorization.constant, 0x0002, 0x00), :LoopVectorization, :getindex, LoopVectorization.OperationStruct(0x00000000000000000000000000000012, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, LoopVectorization.memload, 0x0003, 0x01), :LoopVectorization, :(==), LoopVectorization.OperationStruct(0x00000000000000000000000000000012, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000030003, 0x00000000000000000000000000000000, LoopVectorization.compute, 0x0004, 0x00), :LoopVectorization, :add_fast, LoopVectorization.OperationStruct(0x00000000000000000000000000000012, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x00000000000000000000000000040001, 0x00000000000000000000000000000000, LoopVectorization.compute, 0x0001, 0x00), :LoopVectorization, :identity, LoopVectorization.OperationStruct(0x00000000000000000000000000000001, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x00000000000000000000000000000005, 0x00000000000000000000000000000000, LoopVectorization.compute, 0x0001, 0x00), :LoopVectorization, :LOOPCONSTANTINSTRUCTION, LoopVectorization.OperationStruct(0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, LoopVectorization.constant, 0x0005, 0x00), :LoopVectorization, :ifelse, LoopVectorization.OperationStruct(0x00000000000000000000000000000012, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x00000000000000000000000400030007, 0x00000000000000000000000000000000, LoopVectorization.compute, 0x0006, 0x00), :LoopVectorization, :add_fast, LoopVectorization.OperationStruct(0x00000000000000000000000000000012, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x00000000000000000000000000080002, 0x00000000000000000000000000000000, LoopVectorization.compute, 0x0002, 0x00), :LoopVectorization, :identity, LoopVectorization.OperationStruct(0x00000000000000000000000000000001, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x00000000000000000000000000000009, 0x00000000000000000000000000000000, LoopVectorization.compute, 0x0002, 0x00), :LoopVectorization, :inv_fast, LoopVectorization.OperationStruct(0x00000000000000000000000000000001, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x00000000000000000000000000000006, 0x00000000000000000000000000000000, LoopVectorization.compute, 0x0007, 0x00), :LoopVectorization, :mul_fast, LoopVectorization.OperationStruct(0x00000000000000000000000000000001, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x000000000000000000000000000a000b, 0x00000000000000000000000000000000, LoopVectorization.compute, 0x0008, 0x00), :LoopVectorization, :setindex!, LoopVectorization.OperationStruct(0x00000000000000000000000000000001, 0x00000000000000000000000000000002, 0x00000000000000000000000000000000, 0x0000000000000000000000000000000c, 0x00000000000000000000000000000000, LoopVectorization.memstore, 0x0009, 0x02))}, #unused#::Val{(LoopVectorization.ArrayRefStruct{:A, Symbol("##vptr##_A")}(0x00000000000000000000000000000101, 0x00000000000000000000000000000102, 0x00000000000000000000000000000000, 0x00000000000000000000000000000101), LoopVectorization.ArrayRefStruct{:Bᵥ, Symbol("##vptr##_Bᵥ")}(0x00000000000000000000000000000001, 0x00000000000000000000000000000001, 0x00000000000000000000000000000000, 0x00000000000000000000000000000001))}, #unused#::Val{(0, (), (7,), (), (), ((1, LoopVectorization.HardInt),), ())}, #unused#::Val{(:i_1, :i_2)}, #unused#::Val{Tuple{Tuple{CloseOpenIntervals.CloseOpen{Static.StaticInt{0}, Int64}, CloseOpenIntervals.CloseOpen{Static.StaticInt{0}, Int64}}, Tuple{LayoutPointers.GroupedStridedPointers{Tuple{Ptr{Float64}, Ptr{Float64}}, (1, 1), (0, 0), ((1, 2), (1,)), ((1, 2), (3,)), Tuple{Static.StaticInt{8}, Int64, Static.StaticInt{8}}, Tuple{Static.StaticInt{0}, Static.StaticInt{0}, Static.StaticInt{0}}}, Float64, Float64}}}, var#arguments#::Tuple{Int64, Int64, Ptr{Float64}, Ptr{Float64}, Int64, Float64, Float64})
@ LoopVectorization C:\Users\somlab.julia\packages\LoopVectorization\ORJxS\src\reconstruct_loopset.jl:947
[4] _nanmean!(B::Matrix{Float64}, A::Matrix{Float64}, dims::Tuple{Static.StaticInt{2}})
@ NaNStatistics C:\Users\somlab.julia\packages\NaNStatistics\P1OCn\src\ArrayStats\nanmean.jl:146
[5] _nanmean!(B::Matrix{Float64}, A::Matrix{Float64}, dims::Tuple{Int64})
@ NaNStatistics C:\Users\somlab.julia\packages\NaNStatistics\P1OCn\src\ArrayStats\nanmean.jl:190
[6] _nanmean(A::Matrix{Float64}, dims::Tuple{Int64})
@ NaNStatistics C:\Users\somlab.julia\packages\NaNStatistics\P1OCn\src\ArrayStats\nanmean.jl:49
[7] _nanmean(A::Matrix{Float64}, dims::Int64)
@ NaNStatistics C:\Users\somlab.julia\packages\NaNStatistics\P1OCn\src\ArrayStats\nanmean.jl:39
[8] __nanmean(A::Matrix{Float64}, region::Int64, #unused#::Colon)
@ NaNStatistics C:\Users\somlab.julia\packages\NaNStatistics\P1OCn\src\ArrayStats\nanmean.jl:33
[9] nanmean(A::Matrix{Float64}; dims::Int64, dim::Colon)
@ NaNStatistics C:\Users\somlab.julia\packages\NaNStatistics\P1OCn\src\ArrayStats\nanmean.jl:31
[10] (::NaNStatistics.var"#nanmean##kw")(::NamedTuple{(:dims,), Tuple{Int64}}, ::typeof(nanmean), A::Matrix{Float64})
@ NaNStatistics C:\Users\somlab.julia\packages\NaNStatistics\P1OCn\src\ArrayStats\nanmean.jl:31
[11] top-level scope
@ c:\GitHub\BCIDetectionThresholdSimulations\main.jl:57`
Ah, I think this is likely to be a fundamental limitation related to the fact that, AFAIU, the VSCode-Julia debugger interprets, rather than compiles Julia code (presumably via JuliaInterpreter.jl?), while LoopVectorization.jl uses llvmcall
s which must be compiled. It's possible the JuliaInterpreter.jl / VSCode-Julia folks could add support for this, but if not then you might also try Infiltrator.jl for debugging (which should compile and also be generally faster)
Closing as a limitation of the debugger rather than this package