Splitting gotoblas_t into parameters and kernels to re-use kernels between dynamic targets
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Refactoring
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- c
- Bereich
- build-system, performance
Rechercherichtung
Beginne in common_param.h bei gotoblas_t und verfolge die Logik für dynamische Targets, die Kernel und Parameter auswählt. Untersuche anschließend die Makefile-Definitionen für DYNAMIC_KERNELS, DYNAMIC_PARAMS, DYNAMIC_LIST und DYNAMIC_ARCH. Als erledigt gilt die Aufgabe, wenn Parameter und Funktionszeiger separate Strukturen sind, dynamische Targets gemeinsam genutzte Kernel mit target-spezifischen Parametern kombinieren können und die vorhandenen Build-Modi weiterhin unterstützt werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
This would greatly help with the competing demand of re-using our kernels between different cores with different parameters whilst not overly bloating the dynamic binary.
Looking at gotoblas_t (https://github.com/OpenMathLib/OpenBLAS/blob/develop/common_param.h#L1211), there are two parts, parameters such as:
int sgemm_p, sgemm_q, sgemm_r;
int sgemm_unroll_m, sgemm_unroll_n, sgemm_unroll_mn;
And function pointers, such as:
int (*sgemm_kernel )(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG);
int (*sgemm_beta )(BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
The parameters take up far less space than all of the compiled kernels, so I'm proposing splitting gotoblas_t into openblas_kernels and openblas_params data structures. That would allow our dynamic logic to do something like this:
case NEOVERSEV1:
openblas_kernels = openblas_kernels_ARMV8SVE;
openblas_params = openblas_params_NEOVERSEV1;
This allows sensible defaults (such as the minimum cache size for a particular core should it not be queriable dynamically) without duplicating the kernels multiple times.
We can mark these with DYNAMIC_KERNELS and DYNAMIC_PARAMS in the Makefile, DYNAMIC_LIST would build both for all and DYNAMIC_ARCH would be our current favourites.
@martin-frbg, what do you think?
- Vorherrschende Sprache
- C
- Sterne
- 7.6k
- Forks
- 1.7k
- Ø Merge
- 1 T. 13 Std.
- Gemergte PRs (30 T.)
- 50
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
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 OpenMathLib/OpenBLAS
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 32/100
OpenMathLib/OpenBLAS#6121 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 52/100
OpenMathLib/OpenBLAS#6120 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
OpenMathLib/OpenBLAS#6119 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
openblas_set_threads_callback_function is a silent no-op on WindowsEvtl. vergeben @martin-frbg hat das vor 4 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 43/100
OpenMathLib/OpenBLAS#6108 · 2 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 43/100
OpenMathLib/OpenBLAS#6107 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in OpenMathLib/OpenBLAS
Ähnliche Issues
-
UB: (int) cast of a user double outside int range in dispatch / vm_index_is_int / flat_index_atOffenarea:runtime-vm
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
InauguralSystems/EigenScript#1748 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 4 Tagen
-
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 1 Tag
-
foomatic-rip: dstrtrim_right() underflows mid-loop on an all-whitespace stringEvtl. vergeben @ManasBagul23 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
OpenPrinting/cups-filters#759 ·
Maintainer antworten meist innerhalb von 11 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
EchoTools/nevr-runtime#547 ·
Maintainer antworten meist innerhalb von 1 Tag