2013-07-15 13 views
9

Ho un paio di progetti C++ in una soluzione di Visual Studio 2012. Questi progetti contengono una grande quantità di file e io uso /MP per accelerare la generazione del codice.Generazione di codice parallelo Cuda in Visual Studio

Mi chiedevo se c'è un modo per accelerare anche NVCC in un modo simile. L'utilizzo di/MP nel progetto contenente i kernel CUDA non dà alcun vantaggio in termini di tempo di compilazione e posso vedere solo un core al lavoro.

Quindi la domanda è: come posso utilizzare il mio PC multicore per velocizzare la compilazione CUDA?

risposta

4

A partire da CUDA 5.5, nvcc non ha un equivalente di MSVC/MP, quindi qualsiasi parallelismo di build per i file .cu dovrà provenire dallo strumento di compilazione che richiama NVCC.

Se si può costruire usando GNU Make (per esempio, con Cygwin o su un/sistema di X Linux UNIX/OS), è possibile utilizzare la sua parallel building functionality, utilizzando l'opzione -j, che induce a elaborare più ricette in parallelo.

Here is a nice blog post che elenca diverse opzioni di generazione in parallelo su Windows, alcuni dei quali possono lavorare con NVCC.

Per un vero e proprio sistema distribuito/parallelo accumulo di supporto MSVC e NVCC, si potrebbe provare Incredibuild.

+0

Sono interessato a una soluzione per Visual Studio. L'ultimo link elenca due possibilità: la già citata/MP e la ancora più lenta/maxcpucount [: n]. –

+0

Ho aggiunto un collegamento a Incredibuild, che è probabilmente l'unica vera soluzione per Visual Studio al momento. – harrism

2

È possibile utilizzare IncrediBuild

ma può verificarsi questo errore:
errore fatale C1041: possono database di programma non aprire '...'; se più CL.EXE scrive sullo stesso file .PDB, utilizza/FS

Per evitarlo, imposta Progetto -> Proprietà -> CUDA C/C++ -> Host -> Opzioni aggiuntive del compilatore ->/FS.

Per ulteriori leggere this blog.

Problemi correlati