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