JuliaDiff / JuliaDiff/AbstractDifferentiation.jl
ForwardDiff is broken for differently sized inputs
Open
Nobody has claimed this yet.
bug
- Dominant language
- Julia
- Stars
- 138
- Forks
- 18
- PR merge metrics
- No merged PRs in 30d
Description
julia> using AbstractDifferentiation, ForwardDiff
julia> AD = AbstractDifferentiation
AbstractDifferentiation
julia> ad = AD.ForwardDiffBackend()
AbstractDifferentiation.ForwardDiffBackend{Nothing}()
julia> AD.jacobian(ad, (x, y) -> sum(x .+ y), randn(2), randn(1)) # (!!!) Result should not be tuple of inputs!
(1.0, 2.0)
Environment
julia> versioninfo()
Julia Version 1.8.0
Commit 5544a0fab76 (2022-08-17 13:38 UTC)
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 12 × Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-13.0.1 (ORCJIT, skylake)
Threads: 1 on 12 virtual cores
(jl_z9VwJo) pkg> st
Status `/tmp/jl_z9VwJo/Project.toml`
[c29ec348] AbstractDifferentiation v0.4.3
[f6369f11] ForwardDiff v0.10.32
(jl_z9VwJo) pkg> st --manifest
Status `/tmp/jl_z9VwJo/Manifest.toml`
[c29ec348] AbstractDifferentiation v0.4.3
[d360d2e6] ChainRulesCore v1.15.6
[9e997f8a] ChangesOfVariables v0.1.4
[bbf7d656] CommonSubexpressions v0.3.0
[34da2185] Compat v4.3.0
[163ba53b] DiffResults v1.1.0
[b552c78f] DiffRules v1.11.1
[ffbed154] DocStringExtensions v0.9.1
[e2ba6199] ExprTools v0.1.8
[f6369f11] ForwardDiff v0.10.32
[3587e190] InverseFunctions v0.1.8
[92d709cd] IrrationalConstants v0.1.1
[692b3bcd] JLLWrappers v1.4.1
[2ab3a3ac] LogExpFunctions v0.3.18
[1914dd2f] MacroTools v0.5.10
[77ba4419] NaNMath v1.0.1
[21216c6a] Preferences v1.3.0
[ae029012] Requires v1.3.0
[276daf66] SpecialFunctions v2.1.7
[90137ffa] StaticArrays v1.5.9
[1e83bf80] StaticArraysCore v1.4.0
[efe28fd5] OpenSpecFun_jll v0.5.5+0
[0dad84c5] ArgTools v1.1.1
[56f22d72] Artifacts
[2a0f44e3] Base64
[ade2ca70] Dates
[f43a241f] Downloads v1.6.0
[7b1f6079] FileWatching
[b77e0a4c] InteractiveUtils
[b27032c2] LibCURL v0.6.3
[76f85450] LibGit2
[8f399da3] Libdl
[37e2e46d] LinearAlgebra
[56ddb016] Logging
[d6f4376e] Markdown
[ca575930] NetworkOptions v1.2.0
[44cfe95a] Pkg v1.8.0
[de0858da] Printf
[3fa0cd96] REPL
[9a3f8284] Random
[ea8e919c] SHA v0.7.0
[9e88b42a] Serialization
[6462fe0b] Sockets
[2f01184e] SparseArrays
[10745b16] Statistics
[fa267f1f] TOML v1.0.0
[a4e569a6] Tar v1.10.0
[8dfed614] Test
[cf7118a7] UUIDs
[4ec0a83e] Unicode
[e66e0078] CompilerSupportLibraries_jll v0.5.2+0
[deac9b47] LibCURL_jll v7.84.0+0
[29816b5a] LibSSH2_jll v1.10.2+0
[c8ffd9c3] MbedTLS_jll v2.28.0+0
[14a3606d] MozillaCACerts_jll v2022.2.1
[4536629a] OpenBLAS_jll v0.3.20+0
[05823500] OpenLibm_jll v0.8.1+0
[83775a58] Zlib_jll v1.2.12+3
[8e850b90] libblastrampoline_jll v5.1.1+0
[8e850ede] nghttp2_jll v1.48.0+0
[3f19e933] p7zip_jll v17.4.0+0
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the Julia reproducer using AD.ForwardDiffBackend() and AD.jacobian with the differently sized inputs shown. Trace the jacobian entry point and the ForwardDiffBackend path to determine why the result is the tuple of inputs; done means this example no longer returns that incorrect tuple result.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100