CUDA: Die PTX-Informationen verstehen

8

Ich finde nicht viele nützliche Informationen über PTX info --ptxas-options=-v Ich habe ein 2008 NVCC pdf gefunden, das einen kleinen Klappentext hat, aber keine Details.
1) Was ist 64 bytes cmem[0], 12 bytes cmem[16] ? Ich nehme an, es bezieht sich auf konstantes Gedächtnis. Ich verwende kein konstantes mem im Code, also muss das vom Compiler kommen. (Was geht in RO mem?)
2) Was bedeutet 49152+0 bytes smem ? Ja, es ist Shared Memory, aber was bedeuten die beiden #? 3) Gibt es einen Arzt, der mir dabei hilft? (Wie heißt es?)
4) Wo finde ich ein Dokument, das die * .ptx Datei erklärt? (Ich möchte den cuda assy code lesen / verstehen.)

    
Doug 07.09.2012, 17:40
quelle

2 Antworten

7
  1. cmem wird hier diskutiert. In Ihrem Fall bedeutet das, dass 64 Bytes zum Übergeben von Argumenten an den Kernel und 12 Bytes durch vom Compiler generierte Konstanten verwendet werden.

  2. Im Fall von smem ist die erste Zahl die Menge an Daten, die von Ihrem Code angefordert werden, und die zweite Zahl ( 0 ) gibt an, wie viel Speicher für Systemzwecke verwendet wird.

  3. Ich kenne keine offiziellen Informationen zum ausführlichen ptxas -Ausgabeformat. Z.B. In "CUDA Occupancy Calculator" sagen sie einfach, die Werte für smem ohne irgendwelche Explikationen zu addieren.

  4. Auf der nVidia-Website befinden sich mehrere PTX-Dokumente. Das grundlegendste ist PTX: Parallele Thread-Ausführung ISA Version 3.0 .

aland 07.09.2012 18:27
quelle
1

Siehe " Verschiedene NVCC-Nutzung " . Sie erwähnen, dass die konstante Bankallokation profilspezifisch ist.

Im PTX-Handbuch wird gesagt, dass sie abgesehen von 64 KB konstantem Speicher sind hatte 10 weitere Banken für konstantes Gedächtnis. Der Treiber kann konstante Puffer in diesen Regionen zuweisen und initialisieren und Zeiger als Kernelfunktionsparameter an die Puffer übergeben.

Ich denke, das für nvcc angegebene Profil wird sich darum kümmern, welche Konstanten in welchen Speicher gehen. Trotzdem müssen wir uns keine Sorgen machen, wenn jeder konstante Speicher cmem [n] weniger als 64 KB beträgt, da jede Bank eine Größe von 64 KB hat und allen Threads im Raster gemeinsam ist .

    
lxkarthi 28.03.2013 17:41
quelle

Tags und Links