Investigate different approaches to binding to ggml
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 30/100
- Issue-Typ
- Refactoring
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Bereich
- backend, build-system, devtools
Rechercherichtung
Überprüfe das vorhandene ctypes-Binding in ggml/ggml.py und die Build-Konfiguration in CMakeLists.txt. Untersuche die Test-Branches für nanobind und SWIG, um die Integrationsversuche zu verstehen. Ziel ist es, die Binding-Systeme anhand der aufgeführten Anforderungen zu bewerten: Performance, Wartbarkeit, Erweiterbarkeit und Kompatibilität mit dem Build-System von ggml. Ermittle die Trade-offs jedes Ansatzes, ohne eine vollständige Lösung zu implementieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Current Approach
Use scikit-build-core and a CMakeLists file in the root directory to compile ggml as a shared library and install it relative to the ggml/ggml.py file so that it can be loaded by ctypes.CDLL.
Issues with Current Approach
#define's are not accessible from the shared library, this is an issue for values that are computed on the host system at compile time.- Platform specific functions such as those for CUDA, OpenCL, and Metal are also awkward to conditionally support with the ctypes approach
- Assuming the relative location of files in an installed package causes issues, especially when installing in ie. editable mode for local development.
- Some arguments such as ctypes Array's require awkward typing workarounds.
Alternative Binding Systems
- Cython
- Pybind11
- Nanobind (WIP)
- SWIG (WIP)
- CFFI(?)
- Stick with ctypes
Requirements
- Should be at least as fast as ctypes approach (large overhead is not acceptable for this application)
- Should be simple to maintain (ggml changes often, should be at least as simple as ctypes to add new function definitions / types / etc)
- Should be easy for others to extend or modify ggml
- Should use ggml's existing build system and flags when compiling, should not limit which platforms / optimizations can be used
- Vorherrschende Sprache
- Python
- Sterne
- 152
- Forks
- 16
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus abetlen/ggml-python
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
abetlen/ggml-python#91 ·
-
Import errorOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
abetlen/ggml-python#90 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
abetlen/ggml-python#93 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
abetlen/ggml-python#92 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 30/100
abetlen/ggml-python#21 ·
Alle Issues in abetlen/ggml-python
Ähnliche Issues
-
Path subtraction removes repeated suffix characters instead of one suffixEvtl. vergeben @Gwerdonatus hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
joke2k/django-environ#671 ·
-
good first issue help wanted windows
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 80/100
-
test_pgbouncer deploys the server under test from Charmhub instead of the local build (track/1.31)Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
canonical/temporal-k8s-operator#195 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 4 Tagen
-
`burr` fails to start when the Python path has a space in itEvtl. vergeben @enekoreto hat das heute übernommen. Offenstatus/needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 5 Tagen
-
device support request
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
zigpy/zha-device-handlers#5461 ·
Maintainer antworten meist innerhalb von 4 Tagen