Compiling executors can result in excessively large amounts of machine code.
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
With the tracing front-end to the JIT we are producing longer traces than before.
This should be good, but results in very large chunks of machine code.
Large chunks of machine code are bad because:
- It takes longer and uses more memory
- It puts a lot of pressure on the icache, possibly evicting the interpreter
- It makes handling of inline data and branches less efficient as the targets are further away.
To be clear, the problem is not the number of uops per trace, but the amount of machine code per uop.
Things we can do to fix this:
- Move code into helper functions for the larger uops
- Move complex decref sequences for
DECREF_INPUTS()into helper functions.
(We can also do more optimizations to remove more uops, but that's a separate issue and we're doing it anyway)
Linked PRs
- gh-142228
- gh-142263
- gh-142257
- gh-142386
- gh-142409
Guide de contribution
Ouvrir le guide de contribution
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.
Piste de recherche
Aucun fichier source, test ou point d’entrée n’est indiqué. Commencez par examiner les PR liés gh-142228, gh-142263, gh-142257, gh-142386 et gh-142409 afin de voir quelles parties des exécuteurs compilés et de DECREF_INPUTS() ils traitent. Le travail est terminé lorsque la taille du code machine est réduite sans modifier le comportement de l’exécuteur, et que les tests ou benchmarks pertinents passent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers, performance
- Type d'issue
- Bug
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 20/100