2016-06-29 21 views
2

Es ist klar, dass Tegra TX1 einen gemeinsamen Speicher hat. Meine Frage: Wird der Speicher zwischen CPU und GPU aufgeteilt? Oder ist dieser Speicher zwischen verschiedenen Blöcken in einer GPU aufgeteilt?Jetson Tegra TX1 Shared Memory

Antwort

3

Die CPU und die GPU haben dasselbe Speichersystem. Das heißt, der System-DRAM-Speicher ist auch derselbe physische Speicher, dem der globale GPU-Speicher zugewiesen ist. Verschiedene Techniken wie Nullkopie und Unified Memory können die logische Unterscheidung zwischen Systemspeicherdaten und globalen GPU-Daten weitgehend eliminieren.

Darüber hinaus verfügt die GPU in einem Tegra TX1 wie alle CUDA-fähigen GPUs über CUDA Shared Memory. Dies ist Speicher, der zwischen Threads in einem bestimmten Block geteilt wird, aber nicht zwischen verschiedenen Blöcken in einer GPU geteilt wird. Das primäre Speichersystem, das zwischen verschiedenen Blöcken in einer GPU geteilt wird, ist das globale Speichersystem, das auf Tegra TX1 (physikalisch) dasselbe ist wie der System-DRAM-Speicher, wie bereits erwähnt.

+2

Also im Grunde, während Cuda-Programme schreiben, muss ich nicht über cudamalloc, cudemacpy und cudafree Aussagen sorgen. –

+0

Nicht korrekt. Es gibt noch eine * logische * Unterscheidung zwischen Host- und Gerätespeicher. Sie können diese Unterschiede, wenn Sie möchten, mit Techniken wie Nullkopie oder Unified Memory umgehen oder unscharf machen. –

+0

Also habe ich eine sehr grundlegende Frage. Angenommen, ich schreibe ein Cuda-Programm, um einige Zahlen zu quadrieren, die in einem Array auf dem CPU-Speicher vorhanden sind. Die Art und Weise, wie wir Cuda-Code schreiben, wo CPU- und GPU-Speicher unterschiedlich sind, besteht im Grunde darin, das gesamte Array vom Host-Speicher in den Gerätespeicher zu kopieren und die erforderliche Berechnung durchzuführen. Meine Frage ist: Im Falle von Tegra TX1, wenn wir dieses Verfahren befolgen, wird es eine Duplizierung der Daten auf dem DRAM erzeugen? –

0

Wenn Sie den Speicherblock mit cudamalloc() zugewiesen haben, dann JA. Es wird automatisch freigegeben Global-Memory zwischen CPU und GPU.

Bitte verwechseln Sie es NICHT mit dem CUDA lokalen Speicher namens "Shared MEM." {Geteilt zwischen Threads desselben BLOCK}.

Denken Sie daran: "shared memory" in CUDA ist die TURBO-Geschwindigkeitprogrammierbare Cache innerhalb der SM-Einheit GPU! :-)