JuliaFolds / FLoops.jl

Fast sequential, threaded, and distributed for-loops for Julia—fold for humans™

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

using @infiltrate macro inside @floop doesn't compile

SobhanMP opened this issue · comments

using FLoops, Infiltrator
@floop for i in 1:1000
       x = randn(100, 100)
       @infiltrate
end

gives

ERROR: LoadError: deepcopy of Modules not supported
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] deepcopy_internal(x::Module, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:33
  [3] _deepcopy_array_t(x::Array, T::Type, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:105
  [4] deepcopy_internal(x::Vector{Any}, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:92
  [5] deepcopy_internal(x::Any, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:65
  [6] _deepcopy_array_t(x::Array, T::Type, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:105
  [7] deepcopy_internal(x::Vector{Any}, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:92
  [8] deepcopy_internal(x::Any, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:65
  [9] _deepcopy_array_t(x::Array, T::Type, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:105
 [10] deepcopy_internal(x::Vector{Any}, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:92
 [11] deepcopy_internal(x::Any, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:65
 [12] _deepcopy_array_t(x::Array, T::Type, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:105
 [13] deepcopy_internal(x::Vector{Any}, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:92
 [14] deepcopy_internal(x::Any, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:65
 [15] _deepcopy_array_t(x::Array, T::Type, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:105
 [16] deepcopy_internal(x::Vector{Any}, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:92
 [17] deepcopy_internal(x::Any, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:65
 [18] deepcopy
    @ ./deepcopy.jl:26 [inlined]
 [19] as_parallel_loop(ctx::FLoops.MacroContext, rf_arg::Symbol, coll::Expr, body0::Expr, simd::Bool, executor::Nothing)
    @ FLoops ~/.julia/packages/FLoops/3ZEuy/src/reduce.jl:606
 [20] floop_parallel(ctx::FLoops.MacroContext, ex::Expr, simd::Bool, executor::Nothing)
    @ FLoops ~/.julia/packages/FLoops/3ZEuy/src/reduce.jl:255
 [21] floop_parallel(ctx::FLoops.MacroContext, ex::Expr, simd::Bool)
    @ FLoops ~/.julia/packages/FLoops/3ZEuy/src/reduce.jl:245
 [22] var"@floop"(__source__::LineNumberNode, __module__::Module, ex::Any)
    @ FLoops ~/.julia/packages/FLoops/3ZEuy/src/macro.jl:43
in expression starting at REPL[4]:1

I get the same error message when using the @unpack macro from Parameters.jl

julia> struct AB
           A
           B
       end

julia> @floop for i in 1:2
           @unpack A = AB
       end
ERROR: deepcopy of Modules not supported
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] deepcopy_internal(x::Module, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:33
  [3] _deepcopy_array_t(x::Array, T::Type, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:105
  [4] deepcopy_internal(x::Vector{Any}, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:92
  [5] deepcopy_internal(x::Any, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:65
  [6] _deepcopy_array_t(x::Array, T::Type, stackdict::IdDict{Any, Any})
    @ Base ./deepcopy.jl:105
...