OpenMathLib / OpenMathLib/OpenBLAS
AXPY looks bad especially on MacOS (M4)
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 7.6k
- Forks
- 1.7k
- Ø Merge
- 1 T. 3 Std.
- Gemergte PRs (30 T.)
- 42
Beschreibung
I am doing some benchmarking on 2d convolution in octave and e.g. for simple benchmark like that:
r = ones (1, 5e4);
tic; x1 = conv (r, r); time_row_conv = toc
On MacOS (M4) the timing for OpenBLAS is 3.66 s), and for APPLE veclib it is 0.1 s.
On x86_64 linux (Ryzen 3950x) it is also a couple seconds (and pretty much the same as NETLIB).
I will try to get some other Blas on it eventually to compare.
The conv code essentially is:
const F77_INT len = ma - mb + 1; // Pre-calculate this value to avoid temporary
for (F77_INT k = 0; k < na - nb + 1; k++) {
for (F77_INT j = 0; j < nb; j++) {
for (F77_INT i = 0; i < mb; i++) {
double b_val = b[i + j*mb];
daxpy_(&len, &b_val, &a[mb-i-1 + (k+nb-j-1)*ma], &one, &c[k*len], &one);
}
}
}
and profiler shows that it all dominated by daxpy calls.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den gemeldeten 2-D-Faltungsbenchmark zu reproduzieren und die im Issue gezeigte Faltungsschleife zu profilieren, wobei der Fokus auf ihren daxpy-Aufrufen liegt. Vergleiche die Ergebnisse von OpenBLAS mit Apple vecLib und dem gemeldeten x86_64-Verhalten; als abgeschlossen gilt die Aufgabe, wenn das Performance-Problem identifiziert und behoben wurde und Benchmark-Nachweise die Verbesserung zeigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, macos
- Bereich
- performance
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100