`test_rrule` failed when pullback return array buffer allocated in rrule.
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- julia
- Área
- testing-qa
Línea de trabajo
Comienza con test_rrule y el fallo reportado en check_result.jl en la línea 24; después, reproduce los ejemplos f1 y f2 del issue. Rastrea cómo se invocan los pullbacks y cómo se comparan los arrays devueltos; el trabajo estará terminado cuando las reglas válidas que usan un búfer de retorno asignado dejen de fallar debido a comprobaciones repetidas de pullback, mientras que las discrepancias genuinas sigan fallando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
MWE:
julia> using ChainRulesCore, ChainRulesTestUtils
julia> f(x) = x .* fill(2, size(x))
f (generic function with 1 method)
julia> f1(x) = f(x)
f1 (generic function with 1 method)
julia> f2(x) = f(x)
f2 (generic function with 1 method)
julia> function ChainRulesCore.rrule(::typeof(f1), x)
tmp = similar(x)
fill!(tmp, 2)
y = x .* tmp
function pullback(Ȳ)
tmp .*= Ȳ
∂ = tmp
return (NoTangent(), ∂)
end
return y, pullback
end
julia> function ChainRulesCore.rrule(::typeof(f2), x)
tmp = similar(x)
fill!(tmp, 2)
y = x .* tmp
function pullback(Ȳ)
∂ = tmp .* Ȳ
return (NoTangent(), ∂)
end
return y, pullback
end
julia> test_rrule(f2, [1.0,2.0,3.0])
Test.DefaultTestSet("test_rrule: f2 on Vector{Float64}", Any[], 7, false, false, true, 1.666336561747233e9, 1.666336562127431e9)
julia> test_rrule(f1, [1.0,2.0,3.0])
test_rrule: f1 on Vector{Float64}: Test Failed at /home/peter/.julia/packages/ChainRulesTestUtils/YbVdW/src/check_result.jl:24
Expression: isapprox(actual, expected; kwargs...)
Evaluated: isapprox([32.0, 132.5192, 18.7272], [-7.999999999999777, 16.27999999999986, -6.120000000000349]; rtol = 1.0e-9, atol = 1.0e-9)
Stacktrace:
[...]
It seems a single pullback is called multiple times without being recreated by rrule and thus the assign the value to the same place multiple times.
- Lenguaje dominante
- Julia
- Estrellas
- 50
- Forks
- 18
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JuliaDiff/ChainRulesTestUtils.jl
-
code snippet in readmeAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
JuliaDiff/ChainRulesTestUtils.jl#148 · 1 reacción ·
-
use DocThemeIndigoAbiertodocumentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
more `test_approx` ambiguitiesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
-
mutation
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Todos los issues de JuliaDiff/ChainRulesTestUtils.jl
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
SciML/OrdinaryDiffEq.jl#4875 ·
Los mantenedores suelen responder en 3 días
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
SciML/NonlinearSolve.jl#1372 ·
Los mantenedores suelen responder en 1 día
-
Truncated discrete ccdf and logccdf return incorrect values at the lower atomPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
JuliaStats/Distributions.jl#2095 ·
-
documentation 📜 microphysics💧 ❄️
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
NumericalEarth/Breeze.jl#1073 ·
Los mantenedores suelen responder en 1 día