forward_diff_no_inf can't handle throw_undef_if_not
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia dall’implementazione di forward_diff_no_inf! e ispeziona in forward_visit il nodo IR prodotto da throw_undef_if_not. Riproduci l’esempio phi_run fornito con la callback identity_transform!; il lavoro è completato quando la chiamata termina senza l’errore attuale e il nodo rilevante viene gestito in modo coerente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Ran into this while trying to reproduce another bug.
The following code errors:
using Diffractor
# this is needed as transform! is *always* called on Arguments regardless of what visit_custom says
identity_transform!(ir, ssa::Core.SSAValue, order) = ir[ssa]
function identity_transform!(ir, arg::Core.Argument, order)
return Core.Compiler.insert_node!(ir, Core.SSAValue(1), Core.Compiler.NewInstruction(Expr(:call, Diffractor.ZeroBundle{1}, arg), Any))
end
function phi_run(x::Float64, b1::Bool, b2::Bool)
if b1
a = 0.
elseif b2
a = z
end
return x - a
end
input_ir = first(only(Base.code_ircode(phi_run, Tuple{Float64, Bool, Bool})))
Diffractor.forward_diff_no_inf!(copy(input_ir), Core.SSAValue.(1:length(input_ir.stmts)) .=> 1; transform! = identity_transform!)
I think the fix is easy, add the case to forward_visit about what to do for this kind of node.
Which i think is return nothing
- Lingua principale
- Julia
- Stelle
- 453
- Fork
- 33
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaDiff/Diffractor.jl
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
JuliaDiff/Diffractor.jl#302 · 2 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
JuliaDiff/Diffractor.jl#294 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaDiff/Diffractor.jl#293 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaDiff/Diffractor.jl#290 · 8 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
JuliaDiff/Diffractor.jl#280 · 1 commento ·
Tutte le issue di JuliaDiff/Diffractor.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
JuliaGPU/KernelAbstractions.jl#897 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
oscar-system/GAP.jl#1455 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
JuliaAI/MLJTransforms.jl#85 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
SciML/OrdinaryDiffEq.jl#4875 ·
I maintainer di solito rispondono entro 4 giorni