cuda.core: VirtualMemoryResource.deallocate() unmaps without ordering on the stream
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 76/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- python
- Domaine
- backend-api-design, performance
Piste de recherche
Commencez par VirtualMemoryResource.deallocate() et comparez sa gestion de la validation du stream et de cuMemUnmap avec _SynchronousMemoryResource et LegacyPinnedMemoryResource. Confirmez la documentation de Buffer.close() concernant l’ordre des streams, puis vérifiez que la désallocation synchronise le stream avant l’unmapping et que le comportement d’agrandissement dans le slow path reste correct.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
VirtualMemoryResource.deallocate() validates its stream argument and then calls cuMemUnmap at once. The VMM unmap does not synchronize, so work still in flight on the buffer accesses an unmapped range.
Buffer.close() documents stream-ordered deallocation, and the two synchronous resources (_SynchronousMemoryResource, LegacyPinnedMemoryResource) call stream.sync() before they free. VirtualMemoryResource is the only synchronous resource that skips this.
Suggested fix
Sync the stream before cuMemUnmap, as the siblings do. After #2880 the slow-path grow closes the old buffer through deallocate(), so a grow will sync once; that is the correct cost for a synchronous resource.
Refs: found while analyzing #2882.
- Langage dominant
- Cython
- Étoiles
- 3.4k
- Forks
- 329
- Merge moyen
- 1 j 21 h
- PR mergées (30 j)
- 113
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.
Autres issues de NVIDIA/cuda-python
-
triage
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
NVIDIA/cuda-python#2717 ·
-
triage
Difficulté 1/5 1-3 heures Accessibilité débutants 90/100
NVIDIA/cuda-python#2712 ·
-
[BUG]: LocatedHeaderDir is mutable, so callers can poison the cached header-directory lookup Ouvertetriage
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
NVIDIA/cuda-python#2646 · 1 réaction ·
-
cuda.core triage
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
NVIDIA/cuda-python#2435 · 1 commentaire ·
-
CI/CD
NVIDIA/cuda-python#2926 · 1 personne assignée ·
Toutes les issues de NVIDIA/cuda-python
Issues similaires
-
area/sessions comp/agent P2 tool/skills type/perf
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
NousResearch/hermes-agent#117788 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
code-quality refactoring
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
github/gh-aw-firewall#8816 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
getgrav/grav-plugin-api#45 ·