Created
June 23, 2021 13:50
-
-
Save j-fu/022cd00e1525269c9b6dbf256833c5c3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ERROR: LoadError: type DataType has no field mutable | |
| Stacktrace: | |
| [1] getproperty | |
| @ ./Base.jl:37 [inlined] | |
| [2] _metametaexpr(#unused#::Type{Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}, #unused#::Type{Tuple{typeof(*), Float64}}, metaexprs::Vector{Any}) | |
| @ Cassette ~/.julia/packages/Cassette/FwMN0/src/tagging.jl:272 | |
| [3] #s10#22 | |
| @ ~/.julia/packages/Cassette/FwMN0/src/tagging.jl:488 [inlined] | |
| [4] var"#s10#22"(C::Any, T::Any, ::Any, context::Any, #unused#::Any, args::Any) | |
| @ Cassette ./none:0 | |
| [5] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any}) | |
| @ Core ./boot.jl:580 | |
| [6] macro expansion | |
| @ ~/.julia/packages/Cassette/FwMN0/src/tagging.jl:525 [inlined] | |
| [7] tagged_new_tuple(::Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}, ::typeof(*), ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Float64, SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta, Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}) | |
| @ Cassette ~/.julia/packages/Cassette/FwMN0/src/tagging.jl:522 | |
| [8] overdub(::Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}, ::typeof(tuple), ::Function, ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Float64, SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta, Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}) | |
| @ SparsityDetection ~/.julia/packages/Cassette/FwMN0/src/context.jl:287 | |
| [9] *(::Float64, ::Float64, ::Float64) | |
| @ ./operators.jl:655 [inlined] | |
| [10] recurse | |
| @ ./operators.jl:655 [inlined] | |
| [11] recurse(::Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}, ::typeof(*), ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Float64, SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta, Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}, ::Float64, ::Float64) | |
| @ Cassette ~/.julia/packages/Cassette/FwMN0/src/overdub.jl:0 | |
| [12] overdub(::Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}, ::Function, ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Float64, SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta, Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}, ::Float64, ::Float64) | |
| @ SparsityDetection ~/.julia/packages/SparsityDetection/E7o7R/src/propagate_tags.jl:45 | |
| [13] recurse | |
| @ ~/Wias/work/julia/test/forwarddiff/mwe.jl:7 [inlined] | |
| [14] recurse(::Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}, ::typeof(ffd), ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Vector{Float64}, Union{SparsityDetection.JacInput, SparsityDetection.JacOutput, SparsityDetection.ProvinanceSet}, Vector{Cassette.Meta{SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta}}, Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}, ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Vector{Float64}, Union{SparsityDetection.JacInput, SparsityDetection.JacOutput, SparsityDetection.ProvinanceSet}, Vector{Cassette.Meta{SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta}}, Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}) | |
| @ Cassette ~/.julia/packages/Cassette/FwMN0/src/overdub.jl:0 | |
| [15] overdub(::Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}, ::Function, ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Vector{Float64}, Union{SparsityDetection.JacInput, SparsityDetection.JacOutput, SparsityDetection.ProvinanceSet}, Vector{Cassette.Meta{SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta}}, Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}, ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Vector{Float64}, Union{SparsityDetection.JacInput, SparsityDetection.JacOutput, SparsityDetection.ProvinanceSet}, Vector{Cassette.Meta{SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta}}, Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}) | |
| @ SparsityDetection ~/.julia/packages/SparsityDetection/E7o7R/src/propagate_tags.jl:45 | |
| [16] overdub | |
| @ ~/.julia/packages/Cassette/FwMN0/src/context.jl:266 [inlined] | |
| [17] (::SparsityDetection.var" | |
| @ ~/.julia/packages/SparsityDetection/E7o7R/src/controlflow.jl:148 [inlined] | |
| [18] recurse | |
| @ ~/.julia/packages/SparsityDetection/E7o7R/src/controlflow.jl:148 [inlined] | |
| [19] recurse(overdub_context#272::Cassette.Context{nametype(JacobianSparsityContext), Tuple{Sparsity, SparsityDetection.Path}, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, SparsityDetection.var"##PassType#272", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}, overdub_arguments#273::SparsityDetection.var"#2#3"{typeof(ffd), Tuple{Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Vector{Float64}, Union{SparsityDetection.JacInput, SparsityDetection.JacOutput, SparsityDetection.ProvinanceSet}, Vector{Cassette.Meta{SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta}}, Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}, Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Vector{Float64}, Union{SparsityDetection.JacInput, SparsityDetection.JacOutput, SparsityDetection.ProvinanceSet}, Vector{Cassette.Meta{SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta}}, Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}}}) | |
| @ Cassette ~/.julia/packages/Cassette/FwMN0/src/overdub.jl:0 | |
| [20] abstract_run(::SparsityDetection.var"#22#24", ::Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}, ::Function, ::Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Vector{Float64}, Union{SparsityDetection.JacInput, SparsityDetection.JacOutput, SparsityDetection.ProvinanceSet}, Vector{Cassette.Meta{SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta}}, Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}, ::Vararg{Cassette.Tagged{Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Vector{Float64}, Union{SparsityDetection.JacInput, SparsityDetection.JacOutput, SparsityDetection.ProvinanceSet}, Vector{Cassette.Meta{SparsityDetection.ProvinanceSet, Cassette.NoMetaMeta}}, Cassette.Context{nametype(JacobianSparsityContext), Sparsity, Cassette.Tag{nametype(JacobianSparsityContext), 0x000000006afb7332, Nothing}, Cassette.var"##PassType#274", IdDict{Module, Dict{Symbol, Cassette.BindingMeta}}, Cassette.DisableHooks}}}; verbose::Bool) | |
| @ SparsityDetection ~/.julia/packages/SparsityDetection/E7o7R/src/controlflow.jl:148 | |
| [21] jacobian_sparsity(::Function, ::Vector{Float64}, ::Vector{Float64}; sparsity::Sparsity, verbose::Bool, raw::Bool) | |
| @ SparsityDetection ~/.julia/packages/SparsityDetection/E7o7R/src/jacobian.jl:135 | |
| [22] jacobian_sparsity | |
| @ ~/.julia/packages/SparsityDetection/E7o7R/src/jacobian.jl:130 [inlined] | |
| [23] macro expansion | |
| @ ~/Wias/work/julia/test/forwarddiff/mwe.jl:27 [inlined] | |
| [24] macro expansion | |
| @ ./timing.jl:287 [inlined] | |
| [25] runtest(n::Int64) | |
| @ Main ~/Wias/work/julia/test/forwarddiff/mwe.jl:26 | |
| [26] top-level scope | |
| @ ~/Wias/work/julia/test/forwarddiff/mwe.jl:34 | |
| in expression starting at /home/fuhrmann/Wias/work/julia/test/forwarddiff/mwe.jl:34 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using SparseDiffTools, SparsityDetection | |
| using SparseArrays | |
| function ffd(y,x) | |
| n=length(x) | |
| h=1/(n-1) | |
| y[1]=(x[1]^2-1)*0.5*h | |
| for i=2:n-1 | |
| y[i]=(x[i]^2-1.0)*h | |
| end | |
| y[end]=(x[end]^2-1)*0.5*h | |
| for i=1:n-1 | |
| dx=(x[i+1]^2-x[i]^2)/h | |
| y[i+1]+=dx | |
| y[i]-=dx | |
| end | |
| end | |
| function runtest(n) | |
| jac = spzeros(n, n); | |
| X=ones(n) | |
| input = rand(n) | |
| output = similar(input) | |
| t_col=@elapsed begin | |
| sparsity_pattern = jacobian_sparsity(ffd,output,input) | |
| jac = Float64.(sparse(sparsity_pattern)) | |
| colors = matrix_colors(jac) | |
| forwarddiff_color_jacobian!(jac, ffd, X, colorvec = colors) | |
| end | |
| end | |
| runtest(10) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment