2011-01-12 14 views
10

Quando si compila il codice CUDA, è necessario selezionare per quale architettura viene generato il codice. nvcc fornisce due parametri per specificare questa architettura, essenzialmente:Quali sono i valori predefiniti per le opzioni di arco e codice quando si utilizza nvcc?

  • arch specifica l'arquictecture virtuale, che può essere compute_10, compute_11, ecc
  • code specifica la vera architettura, che può essere sm_10, sm_11, etc.

Quindi un comando come questo:

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

Genera il codice "cubin" per i dispositivi con capacità di calcolo 1.3. Per favore correggimi se sbaglio. Quale mi piacerebbe sapere è quali sono i valori predefiniti per questi due parametri? Qual è l'architettura predefinita che nvcc utilizza quando nessun valore perarchocodeè specificato?

+2

Se si compila il codice utilizzando il flag verbose, verrà visualizzata l'architettura virtuale predefinita utilizzata. –

risposta

8

Ok, sono finalmente riuscito a scoprire i valori predefiniti. Colpa mia per non aver letto tutto il capitolo sulla compilazione della GPU nella documentazione di NVCC dall'inizio alla fine. Così,

nvcc x.cu 

è equivalente per

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

Questi sono i valori di default. La compilazione viene eseguita per impostazione predefinita nell'architettura virtuale compute_10 e la a.out risultante dalla compilazione includerà il codice CUBIN per l'architettura reale sm_10 e il codice dell'assieme PTX per l'architettura compute_10, che verrà ricompilata "just in time" dal driver CUDA se la tua architettura è maggiore di sm_10.

+2

L'architettura predefinita [ora varia in base alla versione CUDA] (http://stackoverflow.com/questions/28932864/cuda-compute-capability-requirements), con le versioni più recenti. –

2

Credo che il valore predefinito sia compute_10, poiché non è possibile utilizzare alcuna funzione compute_13 a meno che non si specifichi esplicitamente che è ciò che si desidera. (Presumibilmente la documentazione di NVCC fornita con il toolkit CUDA specifica, ma non riesco a trovare un collegamento online).

+0

Immagino che tu abbia ragione. Non sono riuscito a trovare queste informazioni quando ho dato un'occhiata alla documentazione di NVCC. Cercherò di nuovo, comunque. – Auron

+0

Hmm, sembra che il valore predefinito per '-code' sia il valore specificato in' -arch', ma non riesco a trovare quale sia il valore predefinito per '-arch'. – Auron

Problemi correlati