ERROR: CuArray only supports element types that are allocated inline.
SciMLBase.ImmutableODEProblem{SVector{4, Float32}, Tuple{Float32, Float32}, false, MTKParameters{SVector{3, Float32}, SVector{7, Float32}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, ODEFunction{false, SciMLBase.FullSpecialize, ODEFunction{false, SciMLBase.FullSpecialize, ModelingToolkit.GeneratedFunctionWrapper{(2, 3, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x25c216d0, 0x66c0e4c1, 0xe13aea51, 0x4f9eab09, 0x3dd13079), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0xdd29b6d5, 0x817a3551, 0x11322694, 0x076bbe1d, 0xa5e7e309), Nothing}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing, SciMLBase.OverrideInitData{NonlinearProblem{Nothing, false, MTKParameters{SVector{11, Float32}, SizedVector{0, Float64, Vector{Float64}}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, NonlinearFunction{false, SciMLBase.FullSpecialize, ModelingToolkit.GeneratedFunctionWrapper{(2, 2, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x7430b4d3, 0x97d8911b, 0x08ae4259, 0x2cbb6d11, 0xf5c706ae), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x57907240, 0xc9de2ec6, 0x10670211, 0xa2f8519c, 0x13c87d58), Nothing}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, ModelingToolkit.ObservedFunctionCache{System}, Nothing, System, Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}, SciMLBase.StandardNonlinearProblem}, typeof(ModelingToolkit.update_initializeprob!), ComposedFunction{ComposedFunction{ModelingToolkit.var"#941#943"{DataType, DataType, Bool}, typeof(ModelingToolkit.safe_float)}, SymbolicIndexingInterface.TimeIndependentObservedFunction{ModelingToolkit.GeneratedFunctionWrapper{(2, 2, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x8571ce9f, 0x112f2557, 0xf85a66c8, 0x85c94ce8, 0xa51a9d10), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x906afefd, 0x660eb8ef, 0x11e09109, 0x89630605, 0x6e701a15), Nothing}}}}, ModelingToolkit.var"#initprobpmap_split#930"{ModelingToolkit.var"#_getter#926"{Tuple{ComposedFunction{ModelingToolkit.PConstructorApplicator{ModelingToolkit.var"#945#946"{DataType, DataType}}, ModelingToolkit.ObservedWrapper{false, ModelingToolkit.GeneratedFunctionWrapper{(2, 2, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x287e3ed8, 0x3b51fd67, 0x9d4b783d, 0xd06fdbcd, 0x589f4ec5), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x87c5e6f0, 0x751d5941, 0xc1c10010, 0xeb9e81ff, 0x082cfb93), Nothing}}}}, ComposedFunction{ModelingToolkit.PConstructorApplicator{ModelingToolkit.var"#945#946"{DataType, DataType}}, ModelingToolkit.ObservedWrapper{false, ModelingToolkit.GeneratedFunctionWrapper{(2, 2, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x4b0ea51c, 0xf4fee0f3, 0x486207e1, 0xde5253fa, 0x0a385a76), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x62c603c2, 0x912fa75c, 0xec4f37c0, 0x06090191, 0x4ad44c9b), Nothing}}}}, Returns{Tuple{}}, Returns{Tuple{}}, Returns{Tuple{}}}}}, ModelingToolkit.InitializationMetadata{ModelingToolkit.ReconstructInitializeprob{ModelingToolkit.var"#_getter#926"{Tuple{ComposedFunction{ModelingToolkit.PConstructorApplicator{ModelingToolkit.var"#945#946"{DataType, DataType}}, ModelingToolkit.ObservedWrapper{true, ModelingToolkit.GeneratedFunctionWrapper{(2, 3, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0xa813a202, 0xb2f17c4b, 0x43e81296, 0xa4b494ca, 0xd6311f19), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0xdeb4e13d, 0x88d526ab, 0xb93c24b0, 0x2cc6ef78, 0x31934efb), Nothing}}}}, Returns{SizedVector{0, Float64, Vector{Float64}}}, Returns{Tuple{}}, Returns{Tuple{}}, Returns{Tuple{}}}}, ComposedFunction{ModelingToolkit.var"#941#943"{DataType, DataType, Bool}, ModelingToolkit.ObservedWrapper{true, ModelingToolkit.GeneratedFunctionWrapper{(2, 3, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0xca527220, 0x0cf0a445, 0xe5c2aab4, 0x65ead3ea, 0x2941ca6b), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x6bad6112, 0xbe794d38, 0x19367e3e, 0x6329ca6d, 0x4da43351), Nothing}}}}}, ModelingToolkit.GetUpdatedU0{SymbolicIndexingInterface.MultipleGetters{ContinuousTimeseries, Vector{SymbolicUtils.BasicSymbolic{Real}}}, SymbolicIndexingInterface.MultipleParametersGetter{SymbolicIndexingInterface.IndexerNotTimeseries, Vector{SymbolicIndexingInterface.GetParameterIndex{ModelingToolkit.ParameterIndex{SciMLStructures.Initials, Int64}}}, Nothing}}, ModelingToolkit.SetInitialUnknowns{SymbolicIndexingInterface.MultipleSetters{Vector{SymbolicIndexingInterface.ParameterHookWrapper{SymbolicIndexingInterface.SetParameterIndex{ModelingToolkit.ParameterIndex{SciMLStructures.Initials, Int64}}, SymbolicUtils.BasicSymbolic{Real}}}}}}, Val{true}}, Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing, SciMLBase.OverrideInitData{NonlinearProblem{Nothing, false, MTKParameters{SVector{11, Float32}, SizedVector{0, Float64, Vector{Float64}}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, NonlinearFunction{false, SciMLBase.FullSpecialize, ModelingToolkit.GeneratedFunctionWrapper{(2, 2, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x7430b4d3, 0x97d8911b, 0x08ae4259, 0x2cbb6d11, 0xf5c706ae), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x57907240, 0xc9de2ec6, 0x10670211, 0xa2f8519c, 0x13c87d58), Nothing}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, ModelingToolkit.ObservedFunctionCache{System}, Nothing, System, Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}, SciMLBase.StandardNonlinearProblem}, typeof(ModelingToolkit.update_initializeprob!), ComposedFunction{ComposedFunction{ModelingToolkit.var"#941#943"{DataType, DataType, Bool}, typeof(ModelingToolkit.safe_float)}, SymbolicIndexingInterface.TimeIndependentObservedFunction{ModelingToolkit.GeneratedFunctionWrapper{(2, 2, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x8571ce9f, 0x112f2557, 0xf85a66c8, 0x85c94ce8, 0xa51a9d10), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x906afefd, 0x660eb8ef, 0x11e09109, 0x89630605, 0x6e701a15), Nothing}}}}, ModelingToolkit.var"#initprobpmap_split#930"{ModelingToolkit.var"#_getter#926"{Tuple{ComposedFunction{ModelingToolkit.PConstructorApplicator{ModelingToolkit.var"#945#946"{DataType, DataType}}, ModelingToolkit.ObservedWrapper{false, ModelingToolkit.GeneratedFunctionWrapper{(2, 2, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x287e3ed8, 0x3b51fd67, 0x9d4b783d, 0xd06fdbcd, 0x589f4ec5), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x87c5e6f0, 0x751d5941, 0xc1c10010, 0xeb9e81ff, 0x082cfb93), Nothing}}}}, ComposedFunction{ModelingToolkit.PConstructorApplicator{ModelingToolkit.var"#945#946"{DataType, DataType}}, ModelingToolkit.ObservedWrapper{false, ModelingToolkit.GeneratedFunctionWrapper{(2, 2, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x4b0ea51c, 0xf4fee0f3, 0x486207e1, 0xde5253fa, 0x0a385a76), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x62c603c2, 0x912fa75c, 0xec4f37c0, 0x06090191, 0x4ad44c9b), Nothing}}}}, Returns{Tuple{}}, Returns{Tuple{}}, Returns{Tuple{}}}}}, ModelingToolkit.InitializationMetadata{ModelingToolkit.ReconstructInitializeprob{ModelingToolkit.var"#_getter#926"{Tuple{ComposedFunction{ModelingToolkit.PConstructorApplicator{ModelingToolkit.var"#945#946"{DataType, DataType}}, ModelingToolkit.ObservedWrapper{true, ModelingToolkit.GeneratedFunctionWrapper{(2, 3, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0xa813a202, 0xb2f17c4b, 0x43e81296, 0xa4b494ca, 0xd6311f19), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0xdeb4e13d, 0x88d526ab, 0xb93c24b0, 0x2cc6ef78, 0x31934efb), Nothing}}}}, Returns{SizedVector{0, Float64, Vector{Float64}}}, Returns{Tuple{}}, Returns{Tuple{}}, Returns{Tuple{}}}}, ComposedFunction{ModelingToolkit.var"#941#943"{DataType, DataType, Bool}, ModelingToolkit.ObservedWrapper{true, ModelingToolkit.GeneratedFunctionWrapper{(2, 3, true), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0xca527220, 0x0cf0a445, 0xe5c2aab4, 0x65ead3ea, 0x2941ca6b), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :__mtk_arg_1, :___mtkparameters___, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x6bad6112, 0xbe794d38, 0x19367e3e, 0x6329ca6d, 0x4da43351), Nothing}}}}}, ModelingToolkit.GetUpdatedU0{SymbolicIndexingInterface.MultipleGetters{ContinuousTimeseries, Vector{SymbolicUtils.BasicSymbolic{Real}}}, SymbolicIndexingInterface.MultipleParametersGetter{SymbolicIndexingInterface.IndexerNotTimeseries, Vector{SymbolicIndexingInterface.GetParameterIndex{ModelingToolkit.ParameterIndex{SciMLStructures.Initials, Int64}}}, Nothing}}, ModelingToolkit.SetInitialUnknowns{SymbolicIndexingInterface.MultipleSetters{Vector{SymbolicIndexingInterface.ParameterHookWrapper{SymbolicIndexingInterface.SetParameterIndex{ModelingToolkit.ParameterIndex{SciMLStructures.Initials, Int64}}, SymbolicUtils.BasicSymbolic{Real}}}}}}, Val{true}}, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}, SciMLBase.StandardODEProblem} is a struct that's not allocated inline
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] check_eltype
@ ~/.julia/packages/CUDA/G7Cnt/src/array.jl:67 [inlined]
[3] CuArray{SciMLBase.ImmutableODEProblem{SVector{…}, Tuple{…}, false, MTKParameters{…}, ODEFunction{…}, @Kwargs{}, SciMLBase.StandardODEProblem}, 1, CUDA.DeviceMemory}(::UndefInitializer, dims::Tuple{Int64})
@ CUDA ~/.julia/packages/CUDA/G7Cnt/src/array.jl:82
[4] CuArray
@ ~/.julia/packages/CUDA/G7Cnt/src/array.jl:437 [inlined]
[5] CuArray
@ ~/.julia/packages/CUDA/G7Cnt/src/array.jl:442 [inlined]
[6] CuArray
@ ~/.julia/packages/CUDA/G7Cnt/src/array.jl:451 [inlined]
[7] convert
@ ~/.julia/packages/GPUArrays/w335n/src/host/construction.jl:4 [inlined]
[8] adapt_storage
@ ~/.julia/packages/CUDA/G7Cnt/src/array.jl:732 [inlined]
[9] adapt_structure
@ ~/.julia/packages/Adapt/2UZ81/src/Adapt.jl:57 [inlined]
[10] adapt
@ ~/.julia/packages/Adapt/2UZ81/src/Adapt.jl:40 [inlined]
[11] adapt_storage
@ ~/.julia/packages/CUDA/G7Cnt/src/CUDAKernels.jl:36 [inlined]
[12] adapt_structure
@ ~/.julia/packages/Adapt/2UZ81/src/Adapt.jl:57 [inlined]
[13] adapt
@ ~/.julia/packages/Adapt/2UZ81/src/Adapt.jl:40 [inlined]
[14] batch_solve_up_kernel(ensembleprob::EnsembleProblem{…}, probs::Vector{…}, alg::GPUTsit5, ensemblealg::EnsembleGPUKernel{…}, I::UnitRange{…}, adaptive::Bool; kwargs::@Kwargs{…})
@ DiffEqGPU ~/.julia/packages/DiffEqGPU/GCPCp/src/solve.jl:276
[15] batch_solve(ensembleprob::EnsembleProblem{…}, alg::GPUTsit5, ensemblealg::EnsembleGPUKernel{…}, I::UnitRange{…}, adaptive::Bool; kwargs::@Kwargs{…})
@ DiffEqGPU ~/.julia/packages/DiffEqGPU/GCPCp/src/solve.jl:173
[16] macro expansion
@ ./timing.jl:421 [inlined]
[17] __solve(ensembleprob::EnsembleProblem{…}, alg::GPUTsit5, ensemblealg::EnsembleGPUKernel{…}; trajectories::Int64, batch_size::Int64, unstable_check::Function, adaptive::Bool, kwargs::@Kwargs{})
@ DiffEqGPU ~/.julia/packages/DiffEqGPU/GCPCp/src/solve.jl:55
[18] __solve
@ ~/.julia/packages/DiffEqGPU/GCPCp/src/solve.jl:1 [inlined]
[19] #solve#747
@ ~/.julia/packages/SciMLBase/b4Q81/src/ensemble/basic_ensemble_solve.jl:359 [inlined]
[20] top-level scope
@ REPL[32]:1
Some type information was truncated. Use `show(err)` to see complete types.
I also tried on 1.12 and I got a similar error.
Describe the bug 🐞
When using codegen from MTK (
ODEProblemcreated from aSystem) together withEnsembleProblem, I'm getting an inlining error,ERROR: CuArray only supports element types that are allocated inline.Expected behavior
solveshould workMinimal Reproducible Example 👇
Error & Stacktrace⚠️
Environment (please complete the following information):
using Pkg; Pkg.status()using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)versioninfo()I also tried on 1.12 and I got a similar error.
Additional context
This is based on #349. I also tried both
split=trueandsplit=false