Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allow out of place function definitions #75

Merged
merged 7 commits into from
Apr 10, 2021
Merged

allow out of place function definitions #75

merged 7 commits into from
Apr 10, 2021

Conversation

ChrisRackauckas
Copy link
Member

@ChrisRackauckas ChrisRackauckas commented Aug 22, 2020

@vchuravy do you know of a reason why this version would generate really slow code?

Fixes #26

@ChrisRackauckas
Copy link
Member Author

ChrisRackauckas commented Mar 27, 2021

julia> sol = solve(monteprob,Tsit5(),EnsembleGPUArray(),trajectories=10_000,saveat=1.0f0)
ERROR: InvalidIRError: compiling kernel gpu_gpu_kernel_oop(Cassette.Context{nametype(CUDACtx), KernelAbstractions.CompilerMetadata{KernelAbstractions.NDIteration.DynamicSize, KernelAbstractions.NDIteration.DynamicCheck, Nothing, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}, KernelAbstractions.NDIteration.NDRange{1, KernelAbstractions.NDIteration.DynamicSize, KernelAbstractions.NDIteration.DynamicSize, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}}}, Nothing, KernelAbstractions.var"##PassType#257", Nothing, Cassette.DisableHooks}, typeof(DiffEqGPU.gpu_gpu_kernel_oop), typeof(lorenz), CUDA.CuDeviceMatrix{Float32, 1}, CUDA.CuDeviceMatrix{Float32, 1}, CUDA.CuDeviceMatrix{Float32, 1}, Float32) resulted in invalid LLVM IR
Reason: unsupported call to the Julia runtime (call to jl_f_tuple)
Stacktrace:
 [1] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:626
 [2] multiple call sites
   @ unknown:0
Reason: unsupported call to the Julia runtime (call to jl_f_getfield)
Stacktrace:
 [1] call
   @ ~\.julia\packages\Cassette\jxIEh\src\context.jl:456
 [2] (::Core.var"
   @ iobuffer.jl:112
 [3] overdub
   @ iobuffer.jl:112
 [4] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [5] multiple call sites
   @ unknown:0
Reason: unsupported call through a literal pointer (call to jl_alloc_string)
Stacktrace:
 [1] _string_n(::Int64)
   @ strings\string.jl:74
 [2] overdub
   @ strings\string.jl:74
 [3] StringVector(::Int64)
   @ iobuffer.jl:31
 [4] overdub
   @ iobuffer.jl:31
 [5] recurse
   @ iobuffer.jl:114
 [6] (::Core.var"
   @ iobuffer.jl:112
 [7] overdub
   @ iobuffer.jl:112
 [8] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [9] multiple call sites
   @ unknown:0
Reason: unsupported call through a literal pointer (call to jl_string_to_array)
Stacktrace:
 [1] unsafe_wrap(::Type{Vector{UInt8}}, ::String)
   @ strings\string.jl:85
 [2] overdub
   @ strings\string.jl:85
 [3] StringVector(::Int64)
   @ iobuffer.jl:31
 [4] overdub
   @ iobuffer.jl:31
 [5] recurse
   @ iobuffer.jl:114
 [6] (::Core.var"
   @ iobuffer.jl:112
 [7] overdub
   @ iobuffer.jl:112
 [8] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [9] multiple call sites
   @ unknown:0
Reason: unsupported call through a literal pointer (call to memset)
Stacktrace:
 [1] fill!(::Vector{UInt8}, ::Int64)
   @ array.jl:406
 [2] overdub
   @ array.jl:406
 [3] recurse
   @ iobuffer.jl:121
 [4] (::Core.var"
   @ iobuffer.jl:112
 [5] overdub
   @ iobuffer.jl:112
 [6] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [7] multiple call sites
   @ unknown:0
Reason: unsupported call to the Julia runtime (call to jl_object_id_)
Stacktrace:
  [1] objectid(::CUDA.CuDeviceMatrix{Float32, 1})
    @ reflection.jl:291
  [2] overdub
    @ reflection.jl:291
  [3] dataids(::CUDA.CuDeviceMatrix{Float32, 1})
    @ abstractarray.jl:1407
  [4] overdub
    @ abstractarray.jl:1407
  [5] mightalias(::CUDA.CuDeviceMatrix{Float32, 1}, ::SVector{3, Float32})
    @ abstractarray.jl:1384
  [6] overdub
    @ abstractarray.jl:1384
  [7] unalias(::CUDA.CuDeviceMatrix{Float32, 1}, ::SVector{3, Float32})
    @ abstractarray.jl:1349
  [8] overdub
    @ abstractarray.jl:1349
  [9] overdub
    @ multidimensional.jl:893
 [10] overdub
    @ multidimensional.jl:887
 [11] overdub
    @ abstractarray.jl:1267
 [12] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [13] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [14] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call to the Julia runtime (call to jl_f_getfield)
Stacktrace:
  [1] getindex(::Tuple{Int64, String}, ::Int64)
    @ tuple.jl:29
  [2] overdub
    @ tuple.jl:29
  [3] overdub
    @ tuple.jl:66
  [4] overdub
    @ strings\io.jl:130
  [5] string(::Int64, ::String)
    @ strings\io.jl:174
  [6] overdub
    @ strings\io.jl:174
  [7] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [8] overdub
    @ show.jl:2642
  [9] overdub
    @ indices.jl:193
 [10] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [11] overdub
    @ indices.jl:248
 [12] overdub
    @ multidimensional.jl:896
 [13] overdub
    @ multidimensional.jl:887
 [14] overdub
    @ abstractarray.jl:1267
 [15] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [16] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [17] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call to the Julia runtime (call to jl_excstack_state)
Stacktrace:
  [1] overdub
    @ strings\io.jl:34
  [2] overdub
    @ strings\io.jl:135
  [3] string(::Int64, ::String)
    @ strings\io.jl:174
  [4] overdub
    @ strings\io.jl:174
  [5] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [6] overdub
    @ show.jl:2642
  [7] overdub
    @ indices.jl:193
  [8] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
  [9] overdub
    @ indices.jl:248
 [10] overdub
    @ multidimensional.jl:896
 [11] overdub
    @ multidimensional.jl:887
 [12] overdub
    @ abstractarray.jl:1267
 [13] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [14] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [15] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call to an unknown function (call to julia.except_enter)
Stacktrace:
  [1] overdub
    @ strings\io.jl:34
  [2] overdub
    @ strings\io.jl:135
  [3] string(::Int64, ::String)
    @ strings\io.jl:174
  [4] overdub
    @ strings\io.jl:174
  [5] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [6] overdub
    @ show.jl:2642
  [7] overdub
    @ indices.jl:193
  [8] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
  [9] overdub
    @ indices.jl:248
 [10] overdub
    @ multidimensional.jl:896
 [11] overdub
    @ multidimensional.jl:887
 [12] overdub
    @ abstractarray.jl:1267
 [13] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [14] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [15] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_alloc_string)
Stacktrace:
  [1] _string_n(::Int64)
    @ strings\string.jl:74
  [2] overdub
    @ strings\string.jl:74
  [3] StringVector(::Int64)
    @ iobuffer.jl:31
  [4] overdub
    @ iobuffer.jl:31
  [5] overdub
    @ intfuncs.jl:680
  [6] overdub
    @ intfuncs.jl:770
  [7] string(::Int64)
    @ intfuncs.jl:761
  [8] overdub
    @ intfuncs.jl:761
  [9] show(::IOBuffer, ::Int64)
    @ show.jl:969
 [10] overdub
    @ show.jl:969
 [11] overdub
    @ strings\io.jl:35
 [12] overdub
    @ strings\io.jl:135
 [13] string(::Int64, ::String)
    @ strings\io.jl:174
 [14] overdub
    @ strings\io.jl:174
 [15] dims2string(::Tuple{Int64})
    @ show.jl:2642
 [16] overdub
    @ show.jl:2642
 [17] overdub
    @ indices.jl:193
 [18] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [19] overdub
    @ indices.jl:248
 [20] overdub
    @ multidimensional.jl:896
 [21] overdub
    @ multidimensional.jl:887
 [22] overdub
    @ abstractarray.jl:1267
 [23] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [24] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [25] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_string_to_array)
Stacktrace:
  [1] unsafe_wrap(::Type{Vector{UInt8}}, ::String)
    @ strings\string.jl:85
  [2] overdub
    @ strings\string.jl:85
  [3] StringVector(::Int64)
    @ iobuffer.jl:31
  [4] overdub
    @ iobuffer.jl:31
  [5] overdub
    @ intfuncs.jl:680
  [6] overdub
    @ intfuncs.jl:770
  [7] string(::Int64)
    @ intfuncs.jl:761
  [8] overdub
    @ intfuncs.jl:761
  [9] show(::IOBuffer, ::Int64)
    @ show.jl:969
 [10] overdub
    @ show.jl:969
 [11] overdub
    @ strings\io.jl:35
 [12] overdub
    @ strings\io.jl:135
 [13] string(::Int64, ::String)
    @ strings\io.jl:174
 [14] overdub
    @ strings\io.jl:174
 [15] dims2string(::Tuple{Int64})
    @ show.jl:2642
 [16] overdub
    @ show.jl:2642
 [17] overdub
    @ indices.jl:193
 [18] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [19] overdub
    @ indices.jl:248
 [20] overdub
    @ multidimensional.jl:896
 [21] overdub
    @ multidimensional.jl:887
 [22] overdub
    @ abstractarray.jl:1267
 [23] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [24] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [25] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_to_string)
Stacktrace:
  [1] String(::Vector{UInt8})
    @ strings\string.jl:53
  [2] overdub
    @ strings\string.jl:53
  [3] overdub
    @ intfuncs.jl:694
  [4] overdub
    @ intfuncs.jl:770
  [5] string(::Int64)
    @ intfuncs.jl:761
  [6] overdub
    @ intfuncs.jl:761
  [7] show(::IOBuffer, ::Int64)
    @ show.jl:969
  [8] overdub
    @ show.jl:969
  [9] overdub
    @ strings\io.jl:35
 [10] overdub
    @ strings\io.jl:135
 [11] string(::Int64, ::String)
    @ strings\io.jl:174
 [12] overdub
    @ strings\io.jl:174
 [13] dims2string(::Tuple{Int64})
    @ show.jl:2642
 [14] overdub
    @ show.jl:2642
 [15] overdub
    @ indices.jl:193
 [16] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [17] overdub
    @ indices.jl:248
 [18] overdub
    @ multidimensional.jl:896
 [19] overdub
    @ multidimensional.jl:887
 [20] overdub
    @ abstractarray.jl:1267
 [21] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [22] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [23] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_grow_end)
Stacktrace:
  [1] _growend!(::Vector{UInt8}, ::UInt64)
    @ array.jl:884
  [2] overdub
    @ array.jl:884
  [3] overdub
    @ iobuffer.jl:330
  [4] unsafe_write(::IOBuffer, ::Ptr{UInt8}, ::UInt64)
    @ iobuffer.jl:419
  [5] overdub
    @ iobuffer.jl:419
  [6] write(::IOBuffer, ::String)
    @ strings\io.jl:185
  [7] overdub
    @ strings\io.jl:185
  [8] show(::IOBuffer, ::Int64)
    @ show.jl:969
  [9] overdub
    @ show.jl:969
 [10] overdub
    @ strings\io.jl:35
 [11] overdub
    @ strings\io.jl:135
 [12] string(::Int64, ::String)
    @ strings\io.jl:174
 [13] overdub
    @ strings\io.jl:174
 [14] dims2string(::Tuple{Int64})
    @ show.jl:2642
 [15] overdub
    @ show.jl:2642
 [16] overdub
    @ indices.jl:193
 [17] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [18] overdub
    @ indices.jl:248
 [19] overdub
    @ multidimensional.jl:896
 [20] overdub
    @ multidimensional.jl:887
 [21] overdub
    @ abstractarray.jl:1267
 [22] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [23] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [24] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call to the Julia runtime (call to jl_pop_handler)
Stacktrace:
  [1] overdub
    @ strings\io.jl:35
  [2] overdub
    @ strings\io.jl:135
  [3] string(::Int64, ::String)
    @ strings\io.jl:174
  [4] overdub
    @ strings\io.jl:174
  [5] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [6] overdub
    @ show.jl:2642
  [7] overdub
    @ indices.jl:193
  [8] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
  [9] overdub
    @ indices.jl:248
 [10] overdub
    @ multidimensional.jl:896
 [11] overdub
    @ multidimensional.jl:887
 [12] overdub
    @ abstractarray.jl:1267
 [13] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [14] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [15] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_rethrow)
Stacktrace:
  [1] rethrow()
    @ error.jl:59
  [2] overdub
    @ error.jl:59
  [3] overdub
    @ strings\io.jl:37
  [4] overdub
    @ strings\io.jl:135
  [5] string(::Int64, ::String)
    @ strings\io.jl:174
  [6] overdub
    @ strings\io.jl:174
  [7] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [8] overdub
    @ show.jl:2642
  [9] overdub
    @ indices.jl:193
 [10] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [11] overdub
    @ indices.jl:248
 [12] overdub
    @ multidimensional.jl:896
 [13] overdub
    @ multidimensional.jl:887
 [14] overdub
    @ abstractarray.jl:1267
 [15] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [16] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [17] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_grow_end)
Stacktrace:
  [1] _growend!(::Vector{UInt8}, ::UInt64)
    @ array.jl:884
  [2] overdub
    @ array.jl:884
  [3] overdub
    @ iobuffer.jl:330
  [4] unsafe_write(::IOBuffer, ::Ptr{UInt8}, ::UInt64)
    @ iobuffer.jl:419
  [5] overdub
    @ iobuffer.jl:419
  [6] write(::IOBuffer, ::String)
    @ strings\io.jl:185
  [7] overdub
    @ strings\io.jl:185
  [8] print(::IOBuffer, ::String)
    @ strings\io.jl:187
  [9] overdub
    @ strings\io.jl:187
 [10] overdub
    @ strings\io.jl:135
 [11] string(::Int64, ::String)
    @ strings\io.jl:174
 [12] overdub
    @ strings\io.jl:174
 [13] dims2string(::Tuple{Int64})
    @ show.jl:2642
 [14] overdub
    @ show.jl:2642
 [15] overdub
    @ indices.jl:193
 [16] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [17] overdub
    @ indices.jl:248
 [18] overdub
    @ multidimensional.jl:896
 [19] overdub
    @ multidimensional.jl:887
 [20] overdub
    @ abstractarray.jl:1267
 [21] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [22] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [23] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call to the Julia runtime (call to jl_f_getfield)
Stacktrace:
  [1] getindex(::Tuple{Int64, String}, ::Int64)
    @ tuple.jl:29
  [2] overdub
    @ tuple.jl:29
  [3] overdub
    @ tuple.jl:66
  [4] overdub
    @ strings\io.jl:135
  [5] string(::Int64, ::String)
    @ strings\io.jl:174
  [6] overdub
    @ strings\io.jl:174
  [7] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [8] overdub
    @ show.jl:2642
  [9] overdub
    @ indices.jl:193
 [10] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [11] overdub
    @ indices.jl:248
 [12] overdub
    @ multidimensional.jl:896
 [13] overdub
    @ multidimensional.jl:887
 [14] overdub
    @ abstractarray.jl:1267
 [15] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [16] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [17] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_grow_end)
Stacktrace:
  [1] _growend!(::Vector{UInt8}, ::Int64)
    @ array.jl:884
  [2] overdub
    @ array.jl:884
  [3] overdub
    @ array.jl:1104
  [4] overdub
    @ strings\io.jl:137
  [5] string(::Int64, ::String)
    @ strings\io.jl:174
  [6] overdub
    @ strings\io.jl:174
  [7] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [8] overdub
    @ show.jl:2642
  [9] overdub
    @ indices.jl:193
 [10] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [11] overdub
    @ indices.jl:248
 [12] overdub
    @ multidimensional.jl:896
 [13] overdub
    @ multidimensional.jl:887
 [14] overdub
    @ abstractarray.jl:1267
 [15] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [16] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [17] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_del_end)
Stacktrace:
  [1] _deleteend!(::Vector{UInt8}, ::Int64)
    @ array.jl:893
  [2] overdub
    @ array.jl:893
  [3] overdub
    @ array.jl:1109
  [4] overdub
    @ strings\io.jl:137
  [5] string(::Int64, ::String)
    @ strings\io.jl:174
  [6] overdub
    @ strings\io.jl:174
  [7] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [8] overdub
    @ show.jl:2642
  [9] overdub
    @ indices.jl:193
 [10] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [11] overdub
    @ indices.jl:248
 [12] overdub
    @ multidimensional.jl:896
 [13] overdub
    @ multidimensional.jl:887
 [14] overdub
    @ abstractarray.jl:1267
 [15] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [16] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [17] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_to_string)
Stacktrace:
  [1] String(::Vector{UInt8})
    @ strings\string.jl:53
  [2] overdub
    @ strings\string.jl:53
  [3] overdub
    @ strings\io.jl:137
  [4] string(::Int64, ::String)
    @ strings\io.jl:174
  [5] overdub
    @ strings\io.jl:174
  [6] dims2string(::Tuple{Int64})
    @ show.jl:2642
  [7] overdub
    @ show.jl:2642
  [8] overdub
    @ indices.jl:193
  [9] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [10] overdub
    @ indices.jl:248
 [11] overdub
    @ multidimensional.jl:896
 [12] overdub
    @ multidimensional.jl:887
 [13] overdub
    @ abstractarray.jl:1267
 [14] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [15] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [16] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_alloc_string)
Stacktrace:
  [1] _string_n(::Int64)
    @ strings\string.jl:74
  [2] overdub
    @ strings\string.jl:74
  [3] StringVector(::Int64)
    @ iobuffer.jl:31
  [4] overdub
    @ iobuffer.jl:31
  [5] overdub
    @ intfuncs.jl:680
  [6] overdub
    @ intfuncs.jl:770
  [7] string(::Int64)
    @ intfuncs.jl:761
  [8] overdub
    @ intfuncs.jl:761
  [9] map(::typeof(string), ::Tuple{Int64, Int64})
    @ tuple.jl:214
 [10] overdub
    @ tuple.jl:214
 [11] dims2string(::Tuple{Int64, Int64})
    @ show.jl:2642
 [12] overdub
    @ show.jl:2642
 [13] overdub
    @ indices.jl:193
 [14] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [15] overdub
    @ indices.jl:248
 [16] overdub
    @ multidimensional.jl:896
 [17] overdub
    @ multidimensional.jl:887
 [18] overdub
    @ abstractarray.jl:1267
 [19] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [20] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [21] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_string_to_array)
Stacktrace:
  [1] unsafe_wrap(::Type{Vector{UInt8}}, ::String)
    @ strings\string.jl:85
  [2] overdub
    @ strings\string.jl:85
  [3] StringVector(::Int64)
    @ iobuffer.jl:31
  [4] overdub
    @ iobuffer.jl:31
  [5] overdub
    @ intfuncs.jl:680
  [6] overdub
    @ intfuncs.jl:770
  [7] string(::Int64)
    @ intfuncs.jl:761
  [8] overdub
    @ intfuncs.jl:761
  [9] map(::typeof(string), ::Tuple{Int64, Int64})
    @ tuple.jl:214
 [10] overdub
    @ tuple.jl:214
 [11] dims2string(::Tuple{Int64, Int64})
    @ show.jl:2642
 [12] overdub
    @ show.jl:2642
 [13] overdub
    @ indices.jl:193
 [14] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [15] overdub
    @ indices.jl:248
 [16] overdub
    @ multidimensional.jl:896
 [17] overdub
    @ multidimensional.jl:887
 [18] overdub
    @ abstractarray.jl:1267
 [19] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [20] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [21] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_to_string)
Stacktrace:
  [1] String(::Vector{UInt8})
    @ strings\string.jl:53
  [2] overdub
    @ strings\string.jl:53
  [3] overdub
    @ intfuncs.jl:694
  [4] overdub
    @ intfuncs.jl:770
  [5] string(::Int64)
    @ intfuncs.jl:761
  [6] overdub
    @ intfuncs.jl:761
  [7] map(::typeof(string), ::Tuple{Int64, Int64})
    @ tuple.jl:214
  [8] overdub
    @ tuple.jl:214
  [9] dims2string(::Tuple{Int64, Int64})
    @ show.jl:2642
 [10] overdub
    @ show.jl:2642
 [11] overdub
    @ indices.jl:193
 [12] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [13] overdub
    @ indices.jl:248
 [14] overdub
    @ multidimensional.jl:896
 [15] overdub
    @ multidimensional.jl:887
 [16] overdub
    @ abstractarray.jl:1267
 [17] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [18] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [19] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_grow_end)
Stacktrace:
  [1] _growend!(::Vector{UInt8}, ::UInt64)
    @ array.jl:884
  [2] overdub
    @ array.jl:884
  [3] overdub
    @ iobuffer.jl:330
  [4] write(::IOBuffer, ::UInt8)
    @ iobuffer.jl:446
  [5] overdub
    @ iobuffer.jl:446
  [6] overdub
    @ io.jl:700
  [7] print(::IOBuffer, ::Char)
    @ char.jl:229
  [8] overdub
    @ char.jl:229
  [9] overdub
    @ strings\io.jl:287
 [10] overdub
    @ strings\io.jl:105
 [11] sprint(::typeof(join), ::Tuple{String, String}, ::Char)
    @ strings\io.jl:101
 [12] overdub
    @ strings\io.jl:101
 [13] join(::Tuple{String, String}, ::Char)
    @ strings\io.jl:293
 [14] overdub
    @ strings\io.jl:293
 [15] dims2string(::Tuple{Int64, Int64})
    @ show.jl:2642
 [16] overdub
    @ show.jl:2642
 [17] overdub
    @ indices.jl:193
 [18] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [19] overdub
    @ indices.jl:248
 [20] overdub
    @ multidimensional.jl:896
 [21] overdub
    @ multidimensional.jl:887
 [22] overdub
    @ abstractarray.jl:1267
 [23] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [24] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [25] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_grow_end)
Stacktrace:
  [1] _growend!(::Vector{UInt8}, ::UInt64)
    @ array.jl:884
  [2] overdub
    @ array.jl:884
  [3] overdub
    @ iobuffer.jl:330
  [4] unsafe_write(::IOBuffer, ::Ptr{UInt8}, ::UInt64)
    @ iobuffer.jl:419
  [5] overdub
    @ iobuffer.jl:419
  [6] write(::IOBuffer, ::String)
    @ strings\io.jl:185
  [7] overdub
    @ strings\io.jl:185
  [8] print(::IOBuffer, ::String)
    @ strings\io.jl:187
  [9] overdub
    @ strings\io.jl:187
 [10] overdub
    @ strings\io.jl:288
 [11] overdub
    @ strings\io.jl:105
 [12] sprint(::typeof(join), ::Tuple{String, String}, ::Char)
    @ strings\io.jl:101
 [13] overdub
    @ strings\io.jl:101
 [14] join(::Tuple{String, String}, ::Char)
    @ strings\io.jl:293
 [15] overdub
    @ strings\io.jl:293
 [16] dims2string(::Tuple{Int64, Int64})
    @ show.jl:2642
 [17] overdub
    @ show.jl:2642
 [18] overdub
    @ indices.jl:193
 [19] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [20] overdub
    @ indices.jl:248
 [21] overdub
    @ multidimensional.jl:896
 [22] overdub
    @ multidimensional.jl:887
 [23] overdub
    @ abstractarray.jl:1267
 [24] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [25] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [26] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_grow_end)
Stacktrace:
  [1] _growend!(::Vector{UInt8}, ::Int64)
    @ array.jl:884
  [2] overdub
    @ array.jl:884
  [3] overdub
    @ array.jl:1104
  [4] overdub
    @ strings\io.jl:107
  [5] sprint(::typeof(join), ::Tuple{String, String}, ::Char)
    @ strings\io.jl:101
  [6] overdub
    @ strings\io.jl:101
  [7] join(::Tuple{String, String}, ::Char)
    @ strings\io.jl:293
  [8] overdub
    @ strings\io.jl:293
  [9] dims2string(::Tuple{Int64, Int64})
    @ show.jl:2642
 [10] overdub
    @ show.jl:2642
 [11] overdub
    @ indices.jl:193
 [12] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [13] overdub
    @ indices.jl:248
 [14] overdub
    @ multidimensional.jl:896
 [15] overdub
    @ multidimensional.jl:887
 [16] overdub
    @ abstractarray.jl:1267
 [17] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [18] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [19] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_del_end)
Stacktrace:
  [1] _deleteend!(::Vector{UInt8}, ::Int64)
    @ array.jl:893
  [2] overdub
    @ array.jl:893
  [3] overdub
    @ array.jl:1109
  [4] overdub
    @ strings\io.jl:107
  [5] sprint(::typeof(join), ::Tuple{String, String}, ::Char)
    @ strings\io.jl:101
  [6] overdub
    @ strings\io.jl:101
  [7] join(::Tuple{String, String}, ::Char)
    @ strings\io.jl:293
  [8] overdub
    @ strings\io.jl:293
  [9] dims2string(::Tuple{Int64, Int64})
    @ show.jl:2642
 [10] overdub
    @ show.jl:2642
 [11] overdub
    @ indices.jl:193
 [12] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [13] overdub
    @ indices.jl:248
 [14] overdub
    @ multidimensional.jl:896
 [15] overdub
    @ multidimensional.jl:887
 [16] overdub
    @ abstractarray.jl:1267
 [17] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [18] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [19] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_array_to_string)
Stacktrace:
  [1] String(::Vector{UInt8})
    @ strings\string.jl:53
  [2] overdub
    @ strings\string.jl:53
  [3] overdub
    @ strings\io.jl:107
  [4] sprint(::typeof(join), ::Tuple{String, String}, ::Char)
    @ strings\io.jl:101
  [5] overdub
    @ strings\io.jl:101
  [6] join(::Tuple{String, String}, ::Char)
    @ strings\io.jl:293
  [7] overdub
    @ strings\io.jl:293
  [8] dims2string(::Tuple{Int64, Int64})
    @ show.jl:2642
  [9] overdub
    @ show.jl:2642
 [10] overdub
    @ indices.jl:193
 [11] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
 [12] overdub
    @ indices.jl:248
 [13] overdub
    @ multidimensional.jl:896
 [14] overdub
    @ multidimensional.jl:887
 [15] overdub
    @ abstractarray.jl:1267
 [16] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [17] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [18] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to jl_alloc_string)
Stacktrace:
  [1] _string_n(::Int64)
    @ strings\string.jl:74
  [2] overdub
    @ strings\string.jl:74
  [3] overdub
    @ strings\substring.jl:217
  [4] overdub
    @ indices.jl:193
  [5] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
  [6] overdub
    @ indices.jl:248
  [7] overdub
    @ multidimensional.jl:896
  [8] overdub
    @ multidimensional.jl:887
  [9] overdub
    @ abstractarray.jl:1267
 [10] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [11] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [12] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call through a literal pointer (call to memcpy)
Stacktrace:
  [1] unsafe_copyto!(::Ptr{UInt8}, ::Ptr{UInt8}, ::Int64)
    @ array.jl:223
  [2] overdub
    @ array.jl:223
  [3] overdub
    @ strings\substring.jl:204
  [4] overdub
    @ strings\substring.jl:220
  [5] overdub
    @ indices.jl:193
  [6] setindex_shape_check(::SVector{3, Float32}, ::Int64, ::Int64)
    @ indices.jl:248
  [7] overdub
    @ indices.jl:248
  [8] overdub
    @ multidimensional.jl:896
  [9] overdub
    @ multidimensional.jl:887
 [10] overdub
    @ abstractarray.jl:1267
 [11] macro expansion
    @ ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:22
 [12] overdub
    @ ~\.julia\packages\KernelAbstractions\sZhVP\src\macros.jl:80
 [13] overdub
    @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
Reason: unsupported call to the Julia runtime (call to jl_f_tuple)
Stacktrace:
 [1] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:626
 [2] throw_inexacterror(::Symbol, ::Type{UInt64}, ::Int64)
   @ boot.jl:602
 [3] overdub
   @ boot.jl:602
 [4] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [5] multiple call sites
   @ unknown:0
Reason: unsupported call to the Julia runtime (call to jl_f_getfield)
Stacktrace:
 [1] InexactError(::Symbol, ::Type{UInt64}, ::Int64)
   @ boot.jl:310
 [2] overdub
   @ boot.jl:310
 [3] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [4] throw_inexacterror(::Symbol, ::Type{UInt64}, ::Int64)
   @ boot.jl:602
 [5] overdub
   @ boot.jl:602
 [6] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [7] multiple call sites
   @ unknown:0
Reason: unsupported call to the Julia runtime (call to jl_f_getfield)
Stacktrace:
 [1] throw_inexacterror(::Symbol, ::Type{UInt64}, ::Int64)
   @ boot.jl:602
 [2] overdub
   @ boot.jl:602
 [3] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [4] multiple call sites
   @ unknown:0
Reason: unsupported call through a literal pointer (call to memcpy)
Stacktrace:
 [1] overdub
   @ array.jl:271
 [2] overdub
   @ array.jl:313
 [3] copyto!(::Vector{UInt8}, ::Int64, ::Vector{UInt8}, ::Int64, ::Int64)
   @ array.jl:304
 [4] overdub
   @ array.jl:304
 [5] overdub
   @ iobuffer.jl:295
 [6] overdub
   @ iobuffer.jl:315
 [7] overdub
   @ ~\.julia\packages\Cassette\jxIEh\src\overdub.jl:0
 [8] multiple call sites
   @ unknown:0
Stacktrace:
  [1] check_ir(job::GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams, GPUCompiler.FunctionSpec{typeof(Cassette.overdub), Tuple{Cassette.Context{nametype(CUDACtx), KernelAbstractions.CompilerMetadata{KernelAbstractions.NDIteration.DynamicSize, KernelAbstractions.NDIteration.DynamicCheck, Nothing, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}, KernelAbstractions.NDIteration.NDRange{1, KernelAbstractions.NDIteration.DynamicSize, KernelAbstractions.NDIteration.DynamicSize, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}}}, Nothing, KernelAbstractions.var"##PassType#257", Nothing, Cassette.DisableHooks}, typeof(DiffEqGPU.gpu_gpu_kernel_oop), typeof(lorenz), CUDA.CuDeviceMatrix{Float32, 1}, CUDA.CuDeviceMatrix{Float32, 1}, CUDA.CuDeviceMatrix{Float32, 1}, Float32}}}, args::LLVM.Module)
    @ GPUCompiler ~\.julia\packages\GPUCompiler\XwWPj\src\validation.jl:123
  [2] macro expansion
    @ ~\.julia\packages\GPUCompiler\XwWPj\src\driver.jl:288 [inlined]
  [3] macro expansion
    @ ~\.julia\packages\TimerOutputs\4QAIk\src\TimerOutput.jl:206 [inlined]
  [4] macro expansion
    @ ~\.julia\packages\GPUCompiler\XwWPj\src\driver.jl:286 [inlined]
  [5] emit_asm(job::GPUCompiler.CompilerJob, ir::LLVM.Module, kernel::LLVM.Function; strip::Bool, validate::Bool, format::LLVM.API.LLVMCodeGenFileType)
    @ GPUCompiler ~\.julia\packages\GPUCompiler\XwWPj\src\utils.jl:62
  [6] cufunction_compile(job::GPUCompiler.CompilerJob)
    @ CUDA ~\.julia\packages\CUDA\qEV3Y\src\compiler\execution.jl:306
  [7] check_cache
    @ ~\.julia\packages\GPUCompiler\XwWPj\src\cache.jl:44 [inlined]
  [8] cached_compilation
    @ .\none:0 [inlined]
  [9] cufunction(f::typeof(Cassette.overdub), tt::Type{Tuple{Cassette.Context{nametype(CUDACtx), KernelAbstractions.CompilerMetadata{KernelAbstractions.NDIteration.DynamicSize, KernelAbstractions.NDIteration.DynamicCheck, Nothing, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}, KernelAbstractions.NDIteration.NDRange{1, KernelAbstractions.NDIteration.DynamicSize, KernelAbstractions.NDIteration.DynamicSize, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}, CartesianIndices{1, Tuple{Base.OneTo{Int64}}}}}, Nothing, 
KernelAbstractions.var"##PassType#257", Nothing, Cassette.DisableHooks}, typeof(DiffEqGPU.gpu_gpu_kernel_oop), typeof(lorenz), CUDA.CuDeviceMatrix{Float32, 1}, CUDA.CuDeviceMatrix{Float32, 1}, CUDA.CuDeviceMatrix{Float32, 1}, Float32}}; name::String, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ CUDA ~\.julia\packages\CUDA\qEV3Y\src\compiler\execution.jl:294
 [10] macro expansion
    @ ~\.julia\packages\CUDA\qEV3Y\src\compiler\execution.jl:102 [inlined]
 [11] (::KernelAbstractions.Kernel{KernelAbstractions.CUDADevice, KernelAbstractions.NDIteration.DynamicSize, KernelAbstractions.NDIteration.DynamicSize, typeof(DiffEqGPU.gpu_gpu_kernel_oop)})(::Function, ::Vararg{Any, N} where N; ndrange::Int64, dependencies::KernelAbstractions.CudaEvent, workgroupsize::Int64, progress::Function)
    @ KernelAbstractions ~\.julia\packages\KernelAbstractions\sZhVP\src\backends\cuda.jl:177
 [12] (::DiffEqGPU.var"#55#59"{typeof(lorenz), typeof(DiffEqGPU.gpu_kernel_oop)})(du::CUDA.CuArray{Float32, 2}, u::CUDA.CuArray{Float32, 2}, p::CUDA.CuArray{Float32, 2}, t::Float32)
    @ DiffEqGPU ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:371
 [13] ODEFunction
    @ ~\.julia\packages\SciMLBase\4HgSI\src\scimlfunctions.jl:334 [inlined]
 [14] initialize!(integrator::OrdinaryDiffEq.ODEIntegrator{Tsit5, true, CUDA.CuArray{Float32, 2}, Nothing, Float32, CUDA.CuArray{Float32, 2}, Float32, Float32, Float32, Vector{CUDA.CuArray{Float32, 2}}, ODESolution{Float32, 3, Vector{CUDA.CuArray{Float32, 2}}, Nothing, Nothing, Vector{Float32}, Vector{Vector{CUDA.CuArray{Float32, 2}}}, ODEProblem{CUDA.CuArray{Float32, 2}, Tuple{Float32, Float32}, true, CUDA.CuArray{Float32, 2}, ODEFunction{true, DiffEqGPU.var"#55#59"{typeof(lorenz), typeof(DiffEqGPU.gpu_kernel_oop)}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, Tsit5, OrdinaryDiffEq.InterpolationData{ODEFunction{true, DiffEqGPU.var"#55#59"{typeof(lorenz), typeof(DiffEqGPU.gpu_kernel_oop)}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Vector{CUDA.CuArray{Float32, 2}}, Vector{Float32}, Vector{Vector{CUDA.CuArray{Float32, 2}}}, OrdinaryDiffEq.Tsit5Cache{CUDA.CuArray{Float32, 2}, CUDA.CuArray{Float32, 2}, CUDA.CuArray{Float32, 2}, OrdinaryDiffEq.Tsit5ConstantCache{Float32, Float32}}}, DiffEqBase.DEStats}, ODEFunction{true, DiffEqGPU.var"#55#59"{typeof(lorenz), typeof(DiffEqGPU.gpu_kernel_oop)}, LinearAlgebra.UniformScaling{Bool}, 
Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, OrdinaryDiffEq.Tsit5Cache{CUDA.CuArray{Float32, 2}, CUDA.CuArray{Float32, 2}, CUDA.CuArray{Float32, 2}, OrdinaryDiffEq.Tsit5ConstantCache{Float32, Float32}}, OrdinaryDiffEq.DEOptions{Float32, Float32, Float32, Float32, typeof(DiffEqGPU.diffeqgpunorm), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), DiffEqGPU.var"#10#16", DataStructures.BinaryMinHeap{Float32}, DataStructures.BinaryMinHeap{Float32}, Nothing, Nothing, Int64, Tuple{}, Float32, Tuple{}}, CUDA.CuArray{Float32, 2}, Float32, Nothing, OrdinaryDiffEq.DefaultInit}, cache::OrdinaryDiffEq.Tsit5Cache{CUDA.CuArray{Float32, 2}, CUDA.CuArray{Float32, 2}, CUDA.CuArray{Float32, 2}, OrdinaryDiffEq.Tsit5ConstantCache{Float32, Float32}})
    @ OrdinaryDiffEq ~\.julia\packages\OrdinaryDiffEq\5egkj\src\perform_step\low_order_rk_perform_step.jl:623
 [15] __init(prob::ODEProblem{CUDA.CuArray{Float32, 2}, Tuple{Float32, Float32}, true, CUDA.CuArray{Float32, 2}, ODEFunction{true, DiffEqGPU.var"#55#59"{typeof(lorenz), typeof(DiffEqGPU.gpu_kernel_oop)}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, alg::Tsit5, timeseries_init::Tuple{}, ts_init::Tuple{}, ks_init::Tuple{}, recompile::Type{Val{true}}; saveat::Float32, tstops::Tuple{}, d_discontinuities::Tuple{}, save_idxs::Nothing, save_everystep::Bool, save_on::Bool, save_start::Bool, save_end::Nothing, callback::Nothing, dense::Bool, calck::Bool, dt::Float32, dtmin::Nothing, dtmax::Float32, force_dtmin::Bool, adaptive::Bool, gamma::Rational{Int64}, abstol::Nothing, reltol::Nothing, qmin::Rational{Int64}, qmax::Int64, qsteady_min::Int64, qsteady_max::Int64, qoldinit::Rational{Int64}, fullnormalize::Bool, failfactor::Int64, beta1::Nothing, beta2::Nothing, maxiters::Int64, internalnorm::typeof(DiffEqGPU.diffeqgpunorm), internalopnorm::typeof(LinearAlgebra.opnorm), isoutofdomain::typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), unstable_check::DiffEqGPU.var"#10#16", verbose::Bool, timeseries_errors::Bool, dense_errors::Bool, advance_to_tstop::Bool, stop_at_next_tstop::Bool, initialize_save::Bool, progress::Bool, progress_steps::Int64, progress_name::String, progress_message::typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), userdata::Nothing, allow_extrapolation::Bool, initialize_integrator::Bool, alias_u0::Bool, alias_du0::Bool, initializealg::OrdinaryDiffEq.DefaultInit, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ OrdinaryDiffEq ~\.julia\packages\OrdinaryDiffEq\5egkj\src\solve.jl:433
 [16] #__solve#404
    @ ~\.julia\packages\OrdinaryDiffEq\5egkj\src\solve.jl:4 [inlined]
 [17] #solve_call#56
    @ ~\.julia\packages\DiffEqBase\rN9Px\src\solve.jl:61 [inlined]
 [18] solve_up(prob::ODEProblem{CUDA.CuArray{Float32, 2}, Tuple{Float32, Float32}, true, CUDA.CuArray{Float32, 2}, ODEFunction{true, DiffEqGPU.var"#55#59"{typeof(lorenz), 
typeof(DiffEqGPU.gpu_kernel_oop)}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, sensealg::Nothing, u0::CUDA.CuArray{Float32, 2}, p::CUDA.CuArray{Float32, 2}, args::Tsit5; kwargs::Base.Iterators.Pairs{Symbol, Any, NTuple{5, Symbol}, NamedTuple{(:unstable_check, :saveat, :callback, :merge_callbacks, :internalnorm), Tuple{DiffEqGPU.var"#10#16", Float32, Nothing, Bool, typeof(DiffEqGPU.diffeqgpunorm)}}})
    @ DiffEqBase ~\.julia\packages\DiffEqBase\rN9Px\src\solve.jl:82
 [19] #solve#57
    @ ~\.julia\packages\DiffEqBase\rN9Px\src\solve.jl:70 [inlined]
 [20] batch_solve_up(ensembleprob::EnsembleProblem{ODEProblem{SVector{3, Float32}, Tuple{Float32, Float32}, false, SVector{3, Float32}, ODEFunction{false, typeof(lorenz), 
LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, var"#7#8", typeof(SciMLBase.DEFAULT_OUTPUT_FUNC), typeof(SciMLBase.DEFAULT_REDUCTION), Nothing}, probs::Vector{ODEProblem{SVector{3, Float32}, Tuple{Float32, Float32}, false, Vector{Float32}, ODEFunction{false, typeof(lorenz), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}}, alg::Tsit5, ensemblealg::EnsembleGPUArray, I::UnitRange{Int64}, u0::Matrix{Float32}, p::Matrix{Float32}; kwargs::Base.Iterators.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:unstable_check, :saveat), Tuple{DiffEqGPU.var"#10#16", Float32}}})
    @ DiffEqGPU ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:276
 [21] batch_solve(ensembleprob::EnsembleProblem{ODEProblem{SVector{3, Float32}, Tuple{Float32, Float32}, false, SVector{3, Float32}, ODEFunction{false, typeof(lorenz), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, var"#7#8", typeof(SciMLBase.DEFAULT_OUTPUT_FUNC), 
typeof(SciMLBase.DEFAULT_REDUCTION), Nothing}, alg::Tsit5, ensemblealg::EnsembleGPUArray, I::UnitRange{Int64}; kwargs::Base.Iterators.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:unstable_check, :saveat), Tuple{DiffEqGPU.var"#10#16", Float32}}})
    @ DiffEqGPU ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:241
 [22] macro expansion
    @ .\timing.jl:287 [inlined]
 [23] __solve(ensembleprob::EnsembleProblem{ODEProblem{SVector{3, Float32}, Tuple{Float32, Float32}, false, SVector{3, Float32}, ODEFunction{false, typeof(lorenz), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, var"#7#8", typeof(SciMLBase.DEFAULT_OUTPUT_FUNC), typeof(SciMLBase.DEFAULT_REDUCTION), Nothing}, alg::Tsit5, ensemblealg::EnsembleGPUArray; trajectories::Int64, batch_size::Int64, unstable_check::Function, kwargs::Base.Iterators.Pairs{Symbol, Float32, Tuple{Symbol}, NamedTuple{(:saveat,), Tuple{Float32}}})
    @ DiffEqGPU ~\.julia\dev\DiffEqGPU\src\DiffEqGPU.jl:158
 [24] #solve#59
    @ ~\.julia\packages\DiffEqBase\rN9Px\src\solve.jl:96 [inlined]
 [25] top-level scope
    @ none:1

@ChrisRackauckas ChrisRackauckas merged commit cb9d656 into master Apr 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Compatibility with out of place definitions
1 participant