cuda.core: VirtualMemoryResource.deallocate() unmaps without ordering on the stream

Ouverte Adaptée aux débutants
#2,886 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

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

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

bug cuda.core

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de NVIDIA/cuda-python

Toutes les issues de NVIDIA/cuda-python

Issues similaires

Plus d'issues Backend & API Design

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.