Skip to content

Commit 0ee831b

Browse files
authored
Fixes warnings during REPL startup while using custom SYSIMG's (#185)
* Fixes warnings during REPL startup while using custom SYSIMG's We encounter following warning during Julia REPL startup if we include DistributionsAD in the default SYSIMG, this commit fixes that issue ``` ┌ Warning: Error requiring `ForwardDiff` from `DistributionsAD` │ exception = │ LoadError: SystemError: opening file "/home/bmharsha/.julia/packages/DistributionsAD/pj8zf/src/reversediffx.jl": No such file or directory │ Stacktrace: │ [1] systemerror(p::String, errno::Int32; extrainfo::Nothing) │ @ Base ./error.jl:168 │ [2] #systemerror#62 │ @ ./error.jl:167 [inlined] │ [3] systemerror │ @ ./error.jl:167 [inlined] │ [4] open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Nothing, append::Nothing) │ @ Base ./iostream.jl:293 │ [5] open │ @ ./iostream.jl:282 [inlined] │ [6] open(f::Base.var"#326#327"{String}, args::String; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) │ @ Base ./io.jl:328 │ [7] open │ @ ./io.jl:328 [inlined] │ [8] read │ @ ./io.jl:434 [inlined] │ [9] _include(mapexpr::Function, mod::Module, _path::String) │ @ Base ./loading.jl:1166 │ [10] include(mod::Module, _path::String) │ @ Base ./Base.jl:386 │ [11] include(x::String) │ @ DistributionsAD.ReverseDiffX ./reversediff.jl:1 │ [12] top-level scope │ @ reversediff.jl:55 │ [13] eval │ @ ./boot.jl:360 [inlined] │ [14] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) │ @ Base ./loading.jl:1116 │ [15] include_string(m::Module, txt::String, fname::String) │ @ Base ./loading.jl:1126 │ [16] macro expansion │ @ ~/.julia/packages/Requires/7Ncym/src/Requires.jl:42 [inlined] │ [17] top-level scope │ @ ~/.julia/packages/DistributionsAD/pj8zf/src/DistributionsAD.jl:74 │ [18] eval │ @ ./boot.jl:360 [inlined] │ [19] eval │ @ ~/.julia/packages/DistributionsAD/pj8zf/src/DistributionsAD.jl:1 [inlined] │ [20] (::DistributionsAD.var"#331#334")() │ @ DistributionsAD ~/.julia/packages/Requires/7Ncym/src/require.jl:99 │ [21] err(f::Any, listener::Module, modname::String) │ @ Requires ~/.julia/packages/Requires/7Ncym/src/require.jl:47 │ [22] (::DistributionsAD.var"#330#333")() │ @ DistributionsAD ~/.julia/packages/Requires/7Ncym/src/require.jl:98 │ [23] withpath(f::Any, path::String) │ @ Requires ~/.julia/packages/Requires/7Ncym/src/require.jl:37 │ [24] (::DistributionsAD.var"#329#332")() │ @ DistributionsAD ~/.julia/packages/Requires/7Ncym/src/require.jl:97 │ [25] listenpkg(f::Any, pkg::Base.PkgId) │ @ Requires ~/.julia/packages/Requires/7Ncym/src/require.jl:20 │ [26] macro expansion │ @ ~/.julia/packages/Requires/7Ncym/src/require.jl:95 [inlined] │ [27] top-level scope │ @ ~/.julia/packages/DistributionsAD/pj8zf/src/DistributionsAD.jl:73 │ [28] eval │ @ ./boot.jl:360 [inlined] │ [29] eval │ @ ~/.julia/packages/DistributionsAD/pj8zf/src/DistributionsAD.jl:1 [inlined] │ [30] (::DistributionsAD.var"#307#320")() │ @ DistributionsAD ~/.julia/packages/Requires/7Ncym/src/require.jl:99 │ [31] err(f::Any, listener::Module, modname::String) │ @ Requires ~/.julia/packages/Requires/7Ncym/src/require.jl:47 │ [32] (::DistributionsAD.var"#306#319")() │ @ DistributionsAD ~/.julia/packages/Requires/7Ncym/src/require.jl:98 │ [33] withpath(f::Any, path::String) │ @ Requires ~/.julia/packages/Requires/7Ncym/src/require.jl:37 │ [34] (::DistributionsAD.var"#305#318")() │ @ DistributionsAD ~/.julia/packages/Requires/7Ncym/src/require.jl:97 │ [35] listenpkg(f::Any, pkg::Base.PkgId) │ @ Requires ~/.julia/packages/Requires/7Ncym/src/require.jl:20 │ [36] macro expansion │ @ ~/.julia/packages/Requires/7Ncym/src/require.jl:95 [inlined] │ [37] macro expansion │ @ ~/.julia/packages/DistributionsAD/pj8zf/src/DistributionsAD.jl:70 [inlined] │ [38] (::DistributionsAD.var"#301#314")() │ @ DistributionsAD ~/.julia/packages/Requires/7Ncym/src/init.jl:11 │ [39] __init__() │ @ DistributionsAD ~/.julia/packages/Requires/7Ncym/src/init.jl:18 │ in expression starting at reversediff.jl:1 └ @ Requires ~/.julia/packages/Requires/7Ncym/src/require.jl:49 _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.6.2 (2021-07-14) _/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release |__/ | �[?2004h �[0Kjulia> �[7C �[7C �[?2004l ``` * Bumps the version number in Project.toml Preparing for a minor release * Reverts the usage of Requires.@include Macro
1 parent c2a5918 commit 0ee831b

File tree

3 files changed

+79
-84
lines changed

3 files changed

+79
-84
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "DistributionsAD"
22
uuid = "ced4e74d-a319-5a8a-b0ac-84af2272839c"
3-
version = "0.6.28"
3+
version = "0.6.29"
44

55
[deps]
66
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"

src/reversediff.jl

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,84 @@ using ..DistributionsAD: TuringPoissonBinomial,
5252
VectorOfMultivariate,
5353
FillVectorOfMultivariate
5454

55-
include("reversediffx.jl")
55+
###############
56+
## logsumexp ##
57+
###############
58+
59+
logsumexp(x::TrackedArray; dims=:) = track(logsumexp, x, dims = dims)
60+
@grad function logsumexp(x::AbstractArray; dims)
61+
x_value = value(x)
62+
lse = logsumexp(x_value; dims=dims)
63+
return lse, Δ ->.* exp.(x_value .- lse),)
64+
end
65+
66+
############
67+
## linalg ##
68+
############
69+
70+
function LinearAlgebra.cholesky(A::Symmetric{<:Any, <:TrackedMatrix}; check=true)
71+
uplo = A.uplo == 'U' ? (:U) : (:L)
72+
factors, info = symm_turing_chol(parent(A), check, uplo)
73+
return Cholesky{eltype(factors), typeof(factors)}(factors, 'U', info)
74+
end
75+
function LinearAlgebra.cholesky(A::TrackedMatrix; check=true)
76+
factors, info = turing_chol(A, check)
77+
return Cholesky{eltype(factors), typeof(factors)}(factors, 'U', info)
78+
end
79+
80+
function symm_turing_chol(x::TrackedArray{V,D}, check, uplo) where {V,D}
81+
tp = tape(x)
82+
x_value = value(x)
83+
(factors,info), back = DistributionsAD.symm_turing_chol_back(x_value, check, uplo)
84+
C = Cholesky{eltype(factors), typeof(factors)}(factors, 'U', info)
85+
out = track(C.factors, D, tp)
86+
record!(tp, SpecialInstruction, symm_turing_chol, (x, check, uplo), out, (back, issuccess(C)))
87+
return out, C.info
88+
end
89+
function turing_chol(x::TrackedArray{V,D}, check) where {V,D}
90+
tp = tape(x)
91+
x_value = value(x)
92+
(factors,info), back = DistributionsAD.turing_chol_back(x_value, check)
93+
C = Cholesky{eltype(factors), typeof(factors)}(factors, 'U', info)
94+
out = track(C.factors, D, tp)
95+
record!(tp, SpecialInstruction, turing_chol, (x, check), out, (back, issuccess(C)))
96+
return out, C.info
97+
end
98+
99+
for f in (:turing_chol, :symm_turing_chol)
100+
@eval begin
101+
@noinline function ReverseDiff.special_reverse_exec!(
102+
instruction::SpecialInstruction{typeof($f)},
103+
)
104+
output = instruction.output
105+
instruction.cache[2] || throw(PosDefException(C.info))
106+
input = instruction.input
107+
input_deriv = deriv(input[1])
108+
P = instruction.cache[1]
109+
input_deriv .+= P((factors = deriv(output),))[1]
110+
unseed!(output)
111+
return nothing
112+
end
113+
end
114+
end
115+
116+
@noinline function ReverseDiff.special_forward_exec!(
117+
instruction::SpecialInstruction{typeof(turing_chol)},
118+
)
119+
output, input = instruction.output, instruction.input
120+
factors = turing_chol(value.(input)...)[1]
121+
value!(output, factors)
122+
return nothing
123+
end
124+
125+
@noinline function ReverseDiff.special_forward_exec!(
126+
instruction::SpecialInstruction{typeof(symm_turing_chol)},
127+
)
128+
output, input = instruction.output, instruction.input
129+
factors = symm_turing_chol(value.(input)...)[1]
130+
value!(output, factors)
131+
return nothing
132+
end
56133

57134
adapt_randn(rng::Random.AbstractRNG, x::TrackedArray, dims...) = adapt_randn(rng, value(x), dims...)
58135

src/reversediffx.jl

Lines changed: 0 additions & 82 deletions
This file was deleted.

0 commit comments

Comments
 (0)