Anonymous function creation is slow, and almost always necessary
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
Start by reading the ForwardDiff method signatures that accept functions and initial values; the issue does not name specific files or tests. Check how DifferentialEquations handles call-site parameters, then determine the scope and compatibility implications of adding a similar option. Done means ForwardDiff can accept parameters at the call site without relying on a closure that captures changing state.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Suppose I have a function f(x::Vector, p::SomeData), which I want to compute the Jacobian of. A common way to do this is
p = generate_some_data()
jac = ForwardDiff(x -> f(x, p), x0)
which has very bad performance on every call because we are instantiating a new anonymous function every time, which triggers compilation. A more clever way of doing this is
partially_applied_f = x -> f(x, p)
#repeat the lines below as much as needed
p = generate_some_data()
jac = ForwardDiff(partially_applied_f, x0)
which introduces a weird invisible dependency of the calls of partially_applied_f on the current state of p. Would it be feasible to update method signatures in this package to accept parameters at the call site? Such that the following code is valid:
p = generate_some_data()
jac = ForwardDiff(f, x0, parameter = p)
DifferentialEquations already do something similar with their method calls. This would remove a lot of overhead and imprevisibility in my use cases.
- Langage dominant
- Julia
- Étoiles
- 1k
- Forks
- 165
- Merge moyen
- 8 j 22 h
- PR mergées (30 j)
- 3
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de JuliaDiff/ForwardDiff.jl
-
missing floatmin, floatmax, and issubnormal for DualPeut-être pris @devmotion l’a pris il y a 38 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
JuliaDiff/ForwardDiff.jl#852 · 6 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
`min` does not return the minimum with respect to `isless` when values tiePeut-être pris @devmotion l’a pris il y a 12 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
JuliaDiff/ForwardDiff.jl#868 ·
Les mainteneurs répondent en général sous 1 jour
-
Enable NaN-safe mode by defaultPeut-être pris @devmotion l’a pris il y a 25 jours. Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
JuliaDiff/ForwardDiff.jl#857 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
JuliaDiff/ForwardDiff.jl#854 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 75/100
JuliaDiff/ForwardDiff.jl#849 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de JuliaDiff/ForwardDiff.jl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Add project: Typst_jll.jlPeut-être pris @github-actions l’a pris aujourd’hui. Ouverteadd-project
Difficulté 1/5 Moins d'une heure Accessibilité débutants 76/100
YDX-2147483647/best-of-typst#590 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100