2012-04-09 15 views
2

Gibt es eine Möglichkeit, herauszufinden, wie viel Speicher den Kernel-Code (Ausführung) in GPU (Gerät) Speicher belegt? Wenn ich über 512 MB Gerätespeicher verfüge, woher weiß ich, wie viel für die Zuweisung zur Verfügung steht? Könnte visueller Profiler solche Informationen anzeigen?cuda Programm-Kernel-Code im Gerät Speicherbereich

+0

Der Kernel _code_, AFAIK, befindet sich nie in der Speichereinrichtung Daten. – leftaroundabout

+0

Wenn ein c-Programm ausgeführt wird, geschieht dies in RAM. Ich denke, es ist sicher anzunehmen, dass der Teil des Codes, der auf GPU ausgeführt wird, dort ist. Ich will nicht unhöflich sein, aber ich hätte gerne eine ausführlichere Antwort. Wenn nicht im Datenspeicher dann wo? – amanda

+1

Eigentlich weiß ich nicht, aber im Gegensatz zu CPUs, GPUs sind eindeutig Harvard-Architekturen als Von Neumanns. – leftaroundabout

Antwort

1

Programmcode verbraucht sehr wenig Speicher. Der Rest des CUDA-Kontextes (lokaler Speicher, konstanter Speicher, printf-Puffer, Heap und Stack) verwendet viel mehr. Die CUDA-Laufzeit-API enthält den Aufruf cudeGetMemInfo, der die verfügbare Menge an freiem Speicher für Ihren Code zurückgibt. Beachten Sie, dass Sie aufgrund der Einschränkungen bei der Fragmentierung und der Seitengröße nicht in der Lage sein werden, jedes letzte freie Speicherbyte zuzuweisen. Die beste Strategie besteht darin, mit dem Maximum zu beginnen und rekursiv zu versuchen, sukzessive kleinere Zuordnungen zuzuweisen, bis Sie eine erfolgreiche Zuweisung erhalten.

Sie können in my answer zu einer früheren Frage nach ähnlichen Linien, eine vollständigere Erklärung der Gerätespeicherverbrauch sehen