NVIDIA / NVIDIA/cuda-python

[PERF] Construction of known `cdef classes` can go through `__new__`

Offen
#1,643 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

cuda.bindings P2 performance
Vorherrschende Sprache
Cython
Sterne
3.4k
Forks
329
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
116

Beschreibung

In driver, runtime and nvrtc, when an instance of a cdef class is contructed (usually as a return value), it just uses the obvious Python-level constructor, for example:

cdef CUtensorMap tensorMap = CUtensorMap()

This makes a slow Python-like call (the ironically named PyObject_FastCall).

Instead, following Cythons fast instantiation advice, we can use __new__, which will make a faster C-level call to __cinit__.

cdef CUtensorMap tensorMap = CUtensorMap.__new__(CUtensorMap)

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Durchsuche den driver-, runtime- und nvrtc-Code nach Instanziierungen bekannter cdef-Klassen, die den Python-seitigen Konstruktor verwenden. Vergleiche diese Stellen mit Cythons Anleitung zur schnellen Instanziierung und aktualisiere die zutreffenden Konstruktionspfade so, dass sie new verwenden; abgeschlossen ist die Aufgabe, wenn die relevanten Instanziierungen durchgängig den schnelleren C-Level-Pfad verwenden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Bereich
performance
Issue-Typ
Refactoring
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.