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
Antwort
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
- 1. Kein CUDA-fähiges Gerät erkannt
- 2. Parallele Reduktion auf CUDA mit Array im Gerät
- 3. cuda auf integriertem GPU + externes Gerät
- 4. Speicherbereich mit verketteten Listenfunktionen
- 5. Sicherer Speicherbereich für Stapelkanarien
- 6. Kann ich ein Cuda-Programm kompilieren, ohne ein Cuda-Gerät zu haben?
- 7. CUDA kopieren Array von Gerät zu Host mit cudaMemcpy2D
- 8. kein CUDA-fähiges Gerät erkannt (mit Ubuntu 12.04.4 Server)
- 9. APK Installationsfehler im Gerät
- 10. Doppelte Werte im Array nach CUDA-Berechnungen
- 11. Wie behandelt der IIS7 ein Authentifizierungsmodul? Speicherbereich?
- 12. gnu Linker Abschnitt der nicht zusammenhängenden Speicherbereich
- 13. CUDA Gegenbuchstabe
- 14. Zxing-Funktion (Bild im Gerät)
- 15. Interner verfügbarer Speicher im Gerät
- 16. Symbol nicht im Gerät ändern
- 17. CUDA: Zusammenfassung der Ergebnisse
- 18. In welchem Speicherbereich werden Ausnahmeklassen Instanzen erstellt?
- 19. Ist GAC ein Speicherbereich oder Festplattenbereich?
- 20. Zugriff auf den Speicherbereich eines Prozesses
- 21. Tracing Schreibzugriff auf Klasseninstanz/Speicherbereich in gdb
- 22. Konstanten mit CUDA verwenden
- 23. CUDA-Architektur programmieren
- 24. CUDA bandwidthTest.cu
- 25. Cuda Thrust min_element stürzt
- 26. Installation Cuda NVIDIA Grafiktreiber fehlgeschlagen
- 27. Was passiert eigentlich, wenn Sie cudaMalloc im Gerät anrufen?
- 28. CUDA Zufallsgenerierung
- 29. CUDA Speicherzuweisungsleistung
- 30. CUDA Bildverarbeitungsfehler
Der Kernel _code_, AFAIK, befindet sich nie in der Speichereinrichtung Daten. – leftaroundabout
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
Eigentlich weiß ich nicht, aber im Gegensatz zu CPUs, GPUs sind eindeutig Harvard-Architekturen als Von Neumanns. – leftaroundabout