Sie sind auf Seite 1von 2

V1 Massive Parrallel Computing

1.1: Atmosphäre

Die Prüfung war recht entspannt, obwohl ich einige Namen durcheinander ge-
bracht habe waren die Prüfer nachsichtig.

1.2: Protokoll

• Vergleichen Sie eine moderne CPU und GPU


– CPU: wenige Threads, aufwändiges Wechseln zwischen Threads auf
einem Proessor (Kopieren der Register, . . . ), gutes caching, viele Co-
Prozessoren, . . .
– GPU: viele SIMD Prozessoren, breite interne Speicheranbindung (16/32
Banken 4 Byte breit), schneller Wechsel zwischen Wraps
– CPU besser für einzelne Threads mit komplexen Aufgaben, GPU
besser für viele Threads, die ähnliches mit unterschiedlichen Daten
macht
• Was lässt sich synchronisieren?
– Synchronisierung nur innerhalb Blöcken und gesamter Kernel
– Zu viele Blöcke können erstellt werden um sich den Status aller zu
merken (potenziell GBs Daten!)
• Erklären Sie das Speichermodell einer Nvidia GPU
– Global Memory: langsam, groß
– Texture Memory: liegt im Global Memory, ist read only oder write
only, speziell optimiert und stellt eingebaute Zusatzfunktionen wie
clipping und Typ-konvertierung bereit
– Constant Memory: ebenfalls in Global Memory aber L1 Cacheable
– Shared Memory blockweise verfügbar, mehr Wraps/weniger Shared
memory pro Thread
– Local Memory: sehr schnelle Register, auslagerbar in Global Memory,
falls zu viel gebraucht wird
• Welche Arten der Matrixkomprimierung kenne Sie?
– Diagonal Matrix Format: gut, wenn Diagonalen von links oben nach
rechts unten von 0en vorliegen
– ELLPACK: gut, wenn jede Zeile mindestens n Nullen enthält (je
größer n, desto besser)
– row / col / data format (wusste Namen nicht)
– rowBegin / col / data format (wusste Namen nicht)

1
• Welches Verfahren würden Sie vorschlagen, um für einen Que-
rypoint alle Nachbarn innerhalb von Distanz d zu finden?
– sortiere Punkte in KD-Tree ein
– durchlaufe nur die Knoten die den Suchradius enthalten
• Ja da gibts aber noch was schnelleres.
Buckes sort
– random shuffle O(n)
– compute pivot points O(n)
calc min, max
linear interpolate inbetween L-1 Pivots (L >= 2#P rocessors)
– compute histogram O(n)
– refine pivot points O(n)
– compute prefix sum of histogram bins
– write each element in parallel to bin start+idx
– sort within buckets in parrallel
– Vector Merge Sort O(N ∗ log(L))
– das geht auch mit adaptiven Grid
• Warum sind adaptive Grids hier schlecht?

Das könnte Ihnen auch gefallen