2011-01-12 2 views
10

Wenn Sie Ihren CUDA-Code kompilieren, müssen Sie auswählen, für welche Architektur Ihr Code generiert wird. nvcc bietet zwei Parameter diese Architektur angeben, im Grunde:Was sind die Standardwerte für Arch- und Codeoptionen bei Verwendung von nvcc?

  • arch die virtuellen arquictecture gibt, die compute_10 sein können, compute_11 usw.
  • code gibt die reale Architektur, die sm_10 sein kann, sm_11 usw.

So ein Befehl wie folgt aus:

nvcc x.cu -arch=compute_13 -code=sm_13 

Erzeugt einen "Cubin" -Code für Geräte mit 1,3-Rechenkapazität. Bitte korrigieren Sie mich, falls ich falsch liege. Was würde ich gerne wissen, welche sind die Standardwerte für diese beiden Parameter? Welche ist die Standardarchitektur, die nvcc verwendet, wenn kein Wert fürarchodercodeangegeben ist?

+2

Wenn Sie Ihren Code mit dem ausführlichen Flag kompilieren, sehen Sie die verwendete virtuelle Standardarchitektur. –

Antwort

8

Ok, ich habe es endlich geschafft, die Standardwerte zu finden. Mein Fehler, dass ich das ganze Kapitel über die GPU-Erstellung in der NVCC-Dokumentation nicht von Anfang bis zum Ende durchgelesen habe. So

nvcc x.cu 

entspricht für

nvcc x.cu –arch=compute_10 -code=sm_10,compute_10 

Das sind die Standardwerte. Die Kompilierung wird standardmäßig auf die virtuelle Architektur compute_10 ausgeführt, und die aus der Kompilierung resultierende a.out enthält den CUBIN-Code für die echte sm_10-Architektur und den PTX-Assemblierungscode für die compute_10-Architektur, die "just in time" neu kompiliert wird. durch den CUDA-Treiber, wenn Ihre Architektur größer als sm_10 ist.

+2

Die Standardarchitektur [variiert nun mit der CUDA-Version] (http://stackoverflow.com/questions/28932864/cuda-compute-capability-requirements), mit neueren Versionen. –

2

Ich glaube, der Standardwert ist compute_10, da Sie keine compute_13 Funktionen verwenden können, es sei denn Sie explizit angeben, dass das was Sie möchten. (Vermutlich die NVCC-Dokumentation, die mit dem CUDA-Toolkit geliefert wird, aber ich kann keinen Link online finden).

+0

Ich denke du hast Recht. Ich konnte diese Informationen nicht finden, als ich einen Blick auf die NVCC-Dokumentation warf. Ich werde trotzdem nachsehen. – Auron

+0

Hmm, es scheint, dass der Standardwert für '-code' der angegebene Wert in' -arch' ist, aber ich kann nicht finden, welcher der Standardwert für '-arch' ist. – Auron

Verwandte Themen