Vorhersage der Laufzeiten für dichte lineare Algebra


9

Ich möchte Laufzeiten für dichte lineare Algebraoperationen auf einer bestimmten Architektur unter Verwendung einer bestimmten Bibliothek vorhersagen. Ich möchte ein Modell lernen, das sich der Funktion annähert

F.Öp:: ::Eingabegrößen Laufzeit

für Operationen wie Matrixmultiplizieren, elementweises Addieren, dreieckiges Lösen usw.

Ich vermute, dass diese Laufzeiten aufgrund der Regelmäßigkeit der Vorgänge meistens vorhersehbar sind, sobald Sie die Problemgrößen überschritten haben, die bequem in den Cache passen.

Fragen:

  1. Ist diese Annahme realistisch? Ist die Laufzeitfunktion wahrscheinlich nahezu deterministisch?
  2. Kann ich davon ausgehen, dass diese Funktion in der Größe der Eingänge polynomisch ist? (dh ich erwarte, dass eine dichte Matrixmultiplikation ungefähr so ​​aussieht wie für und einen Skalarkoeffizienten)αn×k×mEINnk×B.kmα
  3. Gibt es irgendwo bereits Arbeiten dazu?
  4. Mein aktueller Plan ist es, mit einem Regularisierer eine Regression der kleinsten Quadrate . Irgendwelche anderen Vorschläge?L.1

Bearbeiten: Um klar zu sein, suche ich nach Laufzeiten, nicht nach FLOPs oder anderen gängigen Leistungsmetriken. Ich bin bereit, mich auf eine bestimmte Architektur zu beschränken.

Antworten:


10

Ich habe kürzlich genau an diesem Thema gearbeitet. Vielleicht möchten Sie einen Blick auf unser Papier werfen: http://arxiv.org/abs/1209.2364 .

Warum interessieren Sie sich für die Laufzeitvorhersage linearer Algebra-Routinen? Beabsichtigen Sie, das Modell für einen bestimmten Zweck zu verwenden?


Danke für den Link. Ich werde einen Blick darauf werfen. Ich interessiere mich dafür, weil ich den gleichen Grund vermute, warum Sie es sind. Automatisierte Auswahl und Planung von Algorithmen für Matrixausdrücke. In diesem sehr regelmäßigen und vorhersehbaren Bereich sollten viele ansonsten unmögliche Probleme möglich sein.
MRocklin

6

Es gibt viele bereits existierende Arbeiten. Die meisten Entwickler von linearen Algebra-Bibliotheken veröffentlichen Leistungsergebnisse in Form von Gleitkomma-Leistung, die in Laufzeiten umgewandelt werden können.

Wenn Sie beispielsweise nach "DGEMM-Leistung" googeln, erhalten Sie Folgendes: http://math-atlas.sourceforge.net/timing/3_5_10/index.html .

Im Allgemeinen können Sie erwarten, dass die Antworten nicht glatt sind. In der Nähe bestimmter Problemgrößen (die sich auf Cache-Größen beziehen) treten Sprünge oder Spitzen auf. Sie sollten auch Plateaus in Raten und daher linearen Regionen für einen breiten Bereich von Problemgrößen erwarten. Ich erwarte nicht, dass Polynomanpassungen sehr hilfreich sind.

Angesichts eines breit angelegten Benchmarking-Aufwands ist es möglicherweise einfacher, die Ergebnisse zu tabellieren und bei Bedarf zu interpolieren. Was ist dein Ziel?


1
DGEMMn3

Flops in Laufzeiten umzuwandeln ist meiner Erfahrung nach schwierig. In meinem Fall interessieren mich wirklich nur die Laufzeiten. Ich teste die Machbarkeit der statischen Planung.
MRocklin

Nach meiner Erfahrung treten Spitzen / Plateaus nur bei kleinen Problemgrößen auf. Sobald Sie über den Cache hinausgehen, sind die Dinge ziemlich reibungslos. Ich bin damit einverstanden, dass das Hinzufügen stückweiser Funktionen wahrscheinlich die Passform verbessern würde.
MRocklin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.