Hintergrund
Der externe Speicher oder das DAM-Modell definiert die Kosten eines Algorithmus durch die Anzahl der durchgeführten E / As (im Wesentlichen die Anzahl der Cache-Fehlschläge). Diese Laufzeiten werden im Allgemeinen in Form von , der Speichergröße und , der Anzahl der Wörter, die gleichzeitig in den Speicher übertragen werden können, angegeben. Manchmal werden und für bzw. verwendet.
Zum Beispiel erfordert das Sortieren Kosten von und naive Matrixmultiplikation erfordert .
Dieses Modell wird verwendet, um "Cache-vergessene Algorithmen" zu analysieren, bei denen oder M nicht bekannt sind . Im Allgemeinen besteht das Ziel darin, dass der Cache-vergessene Algorithmus im externen Speichermodell eine optimale Leistung erbringt. Dies ist nicht immer möglich, wie zum Beispiel im Permutationsproblem (gezeigt in Brodal, Faderberg 2003 ). In diesem Artikel von Erik Demaine finden Sie eine weitere Erläuterung der Cache-vergessenen Algorithmen, einschließlich der Erörterung von Sortierung und Matrixmultiplikation.
Wir können sehen, dass das Ändern von eine logarithmische Beschleunigung für das Sortieren und eine polynomische Beschleunigung für die Matrixmultiplikation verursacht. (Dieses Ergebnis stammt ursprünglich aus Hong, Kung 1981 und geht tatsächlich sowohl der Unwissenheit des Cache als auch der Formalisierung des externen Speichermodells voraus).
Meine Frage lautet:
Gibt es einen Fall, in dem die Beschleunigung in exponentiell ist ? Die Laufzeit wäre so etwas wie f ( N , B ) / . Ich interessiere mich insbesondere für einen Algorithmus oder eine Datenstruktur, die für den Cache nicht relevant sind und zu dieser Beschreibung passt, würde mich aber über einen Algorithmus / eine Datenstruktur mit Cache-Unterstützung oder sogar eine bekannteste Untergrenze freuen.
In den meisten Modellen wird im Allgemeinen angenommen, dass die Wortgröße wenn N die Eingangsgröße ist und eindeutig M > w ist . Dann wird eine Beschleunigung von 2 M ergibt ein Polynom Speedup in N . Das lässt mich glauben, dass das gesuchte Problem kein Polynom ist. (Andernfalls können wir die Cache-Größe durch eine Konstante ändern, um eine konstante Anzahl von E / As zu erhalten, was unwahrscheinlich erscheint.)
Antworten:
Ich bin nicht sicher, ob ich die Frage verstanden habe. Aber es scheint mir , dass unter der Annahme , dass enthält Probleme erfordern exponentieller Zeit, solche Probleme Ihre Anforderungen erfüllen würde, denn wenn M ist O ( log N ) Sie würde eine exponentielle Anzahl von I / O - Operationen müssen ( da Sie nicht in demselben Speicherblock der Größe O ( log N ) mehr als eine polynomielle Anzahl von Schritten "bleiben" können, ohne in einen Zyklus zu gehen) und wenn M = NPSPACE M O(logN) O(logN) M=N Sie würden nur eine lineare Anzahl von I / O-Operationen benötigen. Bezüglich Ihrer Beobachtung, dass ein solches Problem nicht zu gehören kann , ist es auch richtig, wenn die Beschleunigung für Werte von M gelten muss , die Ω ( N ) sind (da dies bedeuten würde, dass wir eine exponentielle Anzahl von Operationen haben). Wenn die Beschleunigung jedoch nur für kleinere Werte von M gilt , ist dies meiner Meinung nach intuitiv nicht der Fall, da es meiner Meinung nach möglich sein sollte, ein Problem zu entwerfen, das in der Tat die Verkettung kleinerer Probleme der Größe O ( log N ) ist, die jeweils Exponentialwerte erfordern Zeit in seiner eigenen Größe und einer exponentiellen Anzahl von E / A - Operationen (d. h. p oP M Ω(N) M O(logN) , da p o l y ( N ) ist exponentiell in O ( log Npoly(N) poly(N) ). In der Praxis glaube ich, dass P S P A C E -vollständige Probleme wie T Q B F Ihre Bedingung erfüllen.O(logN) PSPACE TQBF
quelle
diese frage scheint in terra incognita, also in unerforschtes gebiet zu verfallen . Nach einigem Nachdenken und Überdenken folgen hier einige Gedanken / Ideen zu dieser anscheinend sehr schwierigen / subtilen Frage, die hoffentlich intelligent sein werden, aber nicht endgültig sein sollen.
Demain, den Sie zitieren, schreibt: "Die Grundidee [von Algorithmen, die den Cache nicht kennen] ist einfach: Entwerfen Sie Algorithmen mit externem Speicher, ohne und M zu kennen . Aber diese einfache Idee hat mehrere überraschend starke Konsequenzen."B M
es scheint auch überraschend subtile Implikationen zu haben. Es scheint schwierig zu sein, dieses Modell auf extremes Verhalten zu analysieren, und es scheint, dass dies bisher noch niemand getan hat. Es gibt einige Erhebungen, und sie scheinen bisher das gesamte Gebiet zu erfassen. Dies ist nicht verwunderlich, da das Feld nur etwa ein Jahrzehnt alt ist.
Das Modell scheint noch nicht auf Turing-Maschinen übersetzt worden zu sein, bei denen eine genauere / formale / theoretische / allgemeine / Standardanalyse möglich ist. Das gesamte Konzept der Big-Oh-Notation und ihre Implikationen und Intuitionen, wie die Irrelevanz von Konstanten, trägt in diesem Bereich von Algorithmen, die den Cache nicht kennen, nicht unbedingt automatisch mit sich. Zum Beispiel scheint das Modell bereits mit den Konstanten zu arbeiten , die die exakten Speichergrößen messen. es scheint, dass das Feld bisher keine grundlegenden Axiome seiner Dynamik hat.B,M
TMs wurden 1936 von Turing erfunden, und die Hartmanis-Stearns- Sätze zur Zeit- / Raumhierarchie (auf die Sie in dieser Frage etwas anspielen) wurden 1965 entdeckt. Das sind bemerkenswerte ~ 3 Jahrzehnte, doch die Sätze zur Zeit- / Raumhierarchie werden jetzt etwas berücksichtigt Grundstufe und in Grundschulklassen unterrichtet. Es scheint noch keine entsprechenden Hierarchiesätze in diesem Modell zu geben, und wie man das macht, ist kein triviales Problem. Dieses Modell scheint tatsächlich mehr "bewegliche Teile" zu haben als die Standard-Turing-Maschine (die bereits eine ziemlich teuflisch komplexe Dynamik aufweist), dh wie eine erweiterte Turing-Maschine.
Eine andere Idee ist, dieses externe Speichermodell auf irgendeine Weise in TMs umzuwandeln, was wiederum nicht in der Literatur / Umfragen zu Cache-vergesslichen Algorithmen auftaucht, und vielleicht zu sehen, wie die Hartmanis-Stearns-Hierarchiesätze übersetzt werden könnten. es scheint sich auf ein Zwei-Band-TM zu beziehen, bei dem ein Band die Größe "M" und das andere Band unendlich hat und Blöcke in den Größen "B" zu "M" übertragen werden. Eine Schwierigkeit dabei ist jedoch, dass es sich eher um ein RAM-Modell als um ein Turing-Modell handelt, das sequentiellen Zugriff auf das Band verwendet. Auf der anderen Seite kann dies zu Feinheiten führen, die mit Konvertierungen zwischen Single- und Multitape-TMs verbunden sind .
schlagen vor, dieses Problem empirisch mit Simulationen anzugreifen, auf die sich die Literatur zum Beispiel in dieser großartigen Umfrage von Kumar on Cache (2003) konzentriert. Es sind viele Programme und Artikel für Cache-Simulationen online, und möglicherweise kann Ihre Frage mit einigen Vereinfachungen ohne viel Code beantwortet werden. Eine Grundidee besteht darin, probabilistische Algorithmen zu erstellen, die auf der Grundlage von Wahrscheinlichkeiten auf "nahe" Speicherbereiche zugreifen. "In der Nähe" ist hier nicht notwendigerweise zusammenhängender Speicher, sondern ein Algorithmus, der zufällige Speicherseiten (Blöcke) auswählt, basierend auf dem Verfolgen seiner eigenen zuletzt aufgerufenen Seiten. Schlagen Sie die Verwendung von Potenzgesetzen vorum die Wahrscheinlichkeit zu bestimmen, dass "nahe" Seiten in der Liste "zuletzt aufgerufen" ausgewählt werden. Dies scheint der Hauptaspekt zu sein, mit dem cachebasierte Leistungsverbesserungen zusammenhängen.
Hier ist ein grobes Argument basierend auf 'M', das im Grunde genommen ein Maß für "Kernspeicher" im Vergleich zum Plattenspeicher ist. Für einen Algorithmus würde man erwarten, dass mit zunehmendem Kernspeicher die Geschwindigkeit des Algorithmus nur annähernd [asymptotisch] linear verbessert wird, und das Hinzufügen von "Kernspeicher", um eine superlineare Erhöhung der Geschwindigkeit des Algorithmus zu erzielen, scheint intuitiv fast so, als würde man die Geschwindigkeit überschreiten begrenzen und "etwas für nichts bekommen". Fassen Sie das Modell jedoch nicht gut genug, um dies zu beweisen [aber anscheinend hat es auch niemand anderes, einschließlich der Behörden / Gründer / Experten].
Diese Cache-vergessene Algorithmusliteratur hat sich auf P-Algorithmen konzentriert und hat bisher keine Analyse eines Nicht-P-Algorithmus gesehen, und vielleicht existiert keine. dies könnte möglicherweise daran liegen, dass die analyse zu schwierig ist! In diesem Fall bleiben Fragen zu extremem Verhalten auf lange Sicht unbeantwortet.
Es scheint nicht einmal intuitiv klar oder möglicherweise überhaupt noch untersucht zu sein, wie sich "kleine" Komplexitätsalgorithmen wie in L oder "große" Algorithmen wie Nicht-P (z. B. Expspace usw.) in diesem Modell verhalten. Das Modell misst die Lokalität des Gedächtnisses, die sich grundlegend zu unterscheiden scheint, aber mit Zeit- und Raumhierarchien verflochten ist.
Es gibt eine etwas undurchsichtige Messung der Turing-Maschinenkomplexität, die als "Umkehrkomplexität" bezeichnet wird, mit einigen Studien, Ergebnissen und Arbeiten, die in Zusammenhang stehen könnten. Grundsätzlich kann der TM eine gewisse Zeit und einen gewissen Raum abdecken, aber Umkehrungen sind eine etwas unabhängige Messung des Bandkopfes während der Berechnung. es scheint, dass "hohe Umkehrungen" mit "hoher Speicherlokalität" zusammenhängen könnten, da in beiden Fällen der Bandkopf dazu neigt, in einer "kleineren" Region zu bleiben, anstatt sich in größere Regionen zu bewegen.
Diese Frage und dieses Modell erinnern mich an das Amdahlsche Gesetz und vermuten eine Art noch unentdecktes ähnliches Gesetz im Zusammenhang mit sinkenden Renditen oder Abwägungen, die in diesem Bereich gelten oder gelten könnten. Grobe Überlegung: In der Theorie des Cache-Vergessens-Algorithmus wird ein Gleichgewicht / Kompromiss zwischen einem endlichen "lokalen" Speicher und einer kostenbasierten externen "unendlichen" Festplatte untersucht. Hierbei handelt es sich im Grunde genommen um zwei Ressourcen, die sich "parallel" verhalten und zwischen denen wahrscheinlich ein optimaler Kompromiss besteht.
quelle