Home

speicherintensiven

Speicherintensive Anwendungen sind Programme, deren Leistungsfähigkeit überwiegend von der Verfügbarkeit und dem Verhalten des Arbeitsspeichers abhängt. Typisch wird die Grenze nicht durch die Rechenleistung der CPU, sondern durch Speicherbandbreite, -latenz und das Cache-Verhalten bestimmt. Eine geringe Datenlokalität oder ein großes Working Set können zu vielen Speicherzugriffen, Cache-Misses und Paging führen und die Performance stark beeinträchtigen.

Zu den zentralen Faktoren gehören die Größe des Working Sets, das Muster der Speicherzugriffe (sequenziell gegen

Typische Anwendungsgebiete umfassen wissenschaftliche Simulationen (z. B. finite Elemente, Molekulardynamik), große Datenanalysen, maschinelles Lernen mit umfangreichen

Messgrößen umfassen Speicherbandbreite, Latenz, Cache-Miss-Raten, Seitenfehler und der Größe des lokalen Working Sets. Typische Gegenmaßnahmen sind

zufällig),
die
Lokalität
von
Zugriffen
(temporale
und
räumliche
Lokalität)
sowie
das
Verhalten
des
Systemspeichers
bei
Auslagerungen.
Speicherintensive
Programme
profitieren
weniger
von
exzessiver
Parallelisierung,
wenn
der
Speicher
nicht
entsprechend
skaliert,
und
lassen
sich
durch
ineffiziente
Speicherzugriffe
auch
bei
hohen
Rechenleistungen
kaum
beschleunigen.
Aufwendig
kann
zudem
die
Energieeffizienz
werden,
da
Speicherzugriffe
oft
mehr
Energie
verbrauchen
als
Berechnungen.
Modellen,
Bild-
und
Videoverarbeitung
sowie
datenbanknahe
Operationen
mit
großen
Datensätzen.
In
der
Praxis
ist
die
Optimierung
speicherintensiver
Programme
oft
eine
Frage
der
Speicherorganisation
und
-zugriffe
statt
reiner
Rechenleistung.
cache-
und
speicherdienliche
Algorithmen,
bedrekte
Datenlayouts
(z.
B.
Array
of
Structures
vs.
Structure
of
Arrays),
Blocking/Tiling,
minimierte
Kopien,
Out-of-Core-Verarbeitung
sowie
datenreduzierende
Techniken
wie
Kompression.