NVIDIA / NVIDIA/cuda-python

Discussion: Should functions in lowpp layer be `def` rather than `cpdef`?

Offen
#2,766 1 Kommentar 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

cuda.bindings performance triage
Vorherrschende Sprache
Cython
Sterne
3.4k
Forks
329
Ø Merge
1 T. 21 Std.
Gemergte PRs (30 T.)
113

Beschreibung

Functions in the lowpp layer are currently declared with cpdef, so they are exposed to both Cython and Python. However, we have always claimed that the Cython interface is not stable, and shouldn't be relied on.

A couple discoveries today are making me wonder whether we want to keep exposing the lowpp layer to Cython at all:

  • Calling a cpdef function from Python has an additional 50ns of overhead vs. a def function (the Python layer delegates to an underlying layer and there is additional work done at that boundary).
  • cpdef functions can not have their return type annotated, which is a blocker for proper .pyi support for the lowpp layer.

Is Cython access at the lowpp layer providing any value here? Could we just s/cpdef/def/g and get more performance and a more Pythonic experience?

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

Beginne damit, die Funktionen in der lowpp-Schicht zu lokalisieren und zu prüfen, wie sie für Cython und Python verfügbar gemacht werden. Vergleiche das bestehende cpdef-Verhalten mit den angegebenen .pyi- und Performance-Anforderungen und sieh anschließend in der Diskussion nach einer Entscheidung. Als erledigt gilt die Aufgabe, wenn das Projekt vereinbart hat, ob die Cython-Exponierung beibehalten werden soll; das Issue nennt keine bestimmten Dateien oder Tests.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Bereich
backend
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Aktiv
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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