`ForwardDiff.jacobian` throws error for `fft`
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 28/100
Hướng nghiên cứu
Bắt đầu bằng cách chạy lại reproduction đã được báo cáo của ForwardDiff.jacobian(fft, x) và đọc stack trace qua AbstractFFTs definitions.jl cùng đường dẫn jacobian của ForwardDiff. Xác định khả năng tương thích dự kiến giữa FFT và các giá trị dual của ForwardDiff, sau đó thêm một regression test thể hiện hành vi Jacobian mong đợi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
reproducing script is below
(@v1.8) pkg> activate --temp
Activating new project at `/var/folders/29/j2y0t06d1918t1tymbv45wgr0000gn/T/jl_T8WfIS`
(jl_T8WfIS) pkg> add ForwardDiff, FFTW
Updating registry at `~/.julia/registries/General.toml`
Resolving package versions...
Installed ChainRulesCore ─ v1.18.0
Updating `/private/var/folders/29/j2y0t06d1918t1tymbv45wgr0000gn/T/jl_T8WfIS/Project.toml`
[7a1cc6ca] + FFTW v1.7.1
[f6369f11] + ForwardDiff v0.10.36
Updating `/private/var/folders/29/j2y0t06d1918t1tymbv45wgr0000gn/T/jl_T8WfIS/Manifest.toml`
[621f4979] + AbstractFFTs v1.5.0
[d360d2e6] + ChainRulesCore v1.18.0
[9e997f8a] + ChangesOfVariables v0.1.8
[bbf7d656] + CommonSubexpressions v0.3.0
[34da2185] + Compat v4.10.0
[163ba53b] + DiffResults v1.1.0
[b552c78f] + DiffRules v1.15.1
[ffbed154] + DocStringExtensions v0.9.3
[7a1cc6ca] + FFTW v1.7.1
[f6369f11] + ForwardDiff v0.10.36
[3587e190] + InverseFunctions v0.1.12
[92d709cd] + IrrationalConstants v0.2.2
[692b3bcd] + JLLWrappers v1.5.0
[2ab3a3ac] + LogExpFunctions v0.3.26
[1914dd2f] + MacroTools v0.5.11
[77ba4419] + NaNMath v1.0.2
[21216c6a] + Preferences v1.4.1
[189a3867] + Reexport v1.2.2
[276daf66] + SpecialFunctions v2.3.1
[90137ffa] + StaticArrays v1.6.5
[1e83bf80] + StaticArraysCore v1.4.2
[f5851436] + FFTW_jll v3.3.10+0
[1d5cc7b8] + IntelOpenMP_jll v2023.2.0+0
[856f044c] + MKL_jll v2023.2.0+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
[4af54fe1] + LazyArtifacts
[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.1
[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
Precompiling project...
7 dependencies successfully precompiled in 6 seconds. 25 already precompiled.
julia> x = randn(2)
2-element Vector{Float64}:
-0.04005888157665624
1.7357331187899907
julia> using ForwardDiff, FFTW
julia> ForwardDiff.jacobian(fft, x)
ERROR: type ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2} not supported
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] _fftfloat(#unused#::Type{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:38
[3] _fftfloat(x::ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:39
[4] fftfloat(x::ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:34
[5] complexfloat(x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:47
[6] fft(x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}, region::UnitRange{Int64})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:214
[7] fft(x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:66
[8] vector_mode_dual_eval!(f::typeof(fft), cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}}, x::Vector{Float64})
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/apiutils.jl:24
[9] vector_mode_jacobian(f::typeof(fft), x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}})
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/jacobian.jl:125
[10] jacobian(f::Function, x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}}, ::Val{true})
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/jacobian.jl:0
[11] jacobian(f::Function, x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}}) (repeats 2 times)
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/jacobian.jl:19
[12] top-level scope
@ REPL[5]:1
- Ngôn ngữ chính
- Julia
- Star
- 1k
- Fork
- 162
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của JuliaDiff/ForwardDiff.jl
-
missing floatmin, floatmax, and issubnormal for DualCó thể đã có người làm @devmotion đã nhận 14 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
JuliaDiff/ForwardDiff.jl#852 · 6 bình luận ·
-
Enable NaN-safe mode by defaultCó thể đã có người làm @devmotion đã nhận 1 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
JuliaDiff/ForwardDiff.jl#857 · 1 reaction ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
JuliaDiff/ForwardDiff.jl#854 · 1 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 75/100
JuliaDiff/ForwardDiff.jl#849 ·
-
`gradient!` leaves part of the result unwritten when `f` does not depend on its argumentCó thể đã có người làm @devmotion đã nhận 43 ngày trước. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 78/100
JuliaDiff/ForwardDiff.jl#847 ·
Tất cả issue của JuliaDiff/ForwardDiff.jl
Issue tương tự
-
Độ khó 2/5 Dưới một giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
CliMA/ClimaAtmos.jl#4891 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
tagbot-manual
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
tshort/StaticCompiler.jl#191 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
SciML/SciMLSensitivity.jl#1703 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
JuliaGPU/GPUCompiler.jl#1008 ·
Maintainer thường phản hồi trong vòng 1 ngày