Cercare di comprendere le differenze tra l'architettura virtuale e reale di cuda e in che modo le diverse configurazioni influenzeranno le prestazioni del programma, ad es.differenze tra architettura virtuale e reale di cuda
-gencode arch=compute_20,code=sm_20
-gencode arch=compute_20,code=sm_21
-gencode arch=compute_21,code=sm_21
...
La seguente spiegazione è stata data nel manuale NVCC,
compilazione GPU avviene tramite una rappresentazione intermedia, PTX ([...]), che può essere considerato come assemblaggio di una architettura virtuale della GPU. Contrariamente a un processore grafico reale , tale GPU virtuale è definita interamente dall'insieme di funzionalità o funzionalità, , che fornisce all'applicazione. In particolare, un'architettura GPU virtuale fornisce un set di istruzioni generico (in gran parte) e la codifica delle istruzioni binarie è un non-problema poiché i programmi PTX sono sempre rappresentati in formato testo. Quindi, un comando di compilazione nvcc utilizza sempre due architetture: un'architettura di calcolo per specificare l'architettura intermedia virtuale, oltre a una vera architettura GPU per specificare il processore desiderato da eseguire. Affinché un comando nvcc sia valido, , l'architettura reale deve essere un'implementazione (in qualche modo o un'altra) dell'architettura virtuale . Questo è ulteriormente spiegato di seguito. L'architettura virtuale scelta è più una dichiarazione sulle funzionalità della GPU che richiede l'applicazione : l'utilizzo di un'architettura virtuale più piccola consente comunque un intervallo più ampio di architetture effettive per il secondo stadio nvcc. Al contrario, la specifica di un'architettura virtuale che fornisce funzionalità inutilizzate dall'applicazione limita inutilmente il set di possibili GPU che possono essere specificate nel secondo stadio nvcc.
Ma ancora non riesce quasi mai come le prestazioni sarà influenzato da diverse configurazioni (o, forse interesserà solo la selezione dei dispositivi fisici GPU?). In particolare, questa affermazione è più confuso per me:
In particolare, un'architettura GPU virtuale fornisce una (in gran parte) generico set di istruzioni , e la codifica di istruzioni binario è un non-problema, perché programmi PTX sono sempre rappresentati in formato testo.