2013-07-15 18 views
9

Ich habe ein paar C++ - Projekt in einer Visual Studio 2012-Lösung. Diese Projekte enthält eine große Menge an Dateien und Ich verwende /MP, um die Code-Generierung zu beschleunigen.Cuda parallele Code-Generierung in Visual Studio

Ich frage mich, ob es eine Möglichkeit gibt, NVCC auf ähnliche Weise zu beschleunigen. Die Verwendung von/MP in dem Projekt, das CUDA-Kernel enthält, bringt keine Vorteile in der Kompilierungszeit und ich kann nur einen Kern bei der Arbeit sehen.

Die Frage ist also: Wie kann ich meinen Multicore-PC verwenden, um die CUDA-Kompilierung zu beschleunigen?

Antwort

4

Ab CUDA 5.5 hat nvcc kein Äquivalent zu MSVC/MP. Daher muss jeder Build-Parallelismus für .cu-Dateien vom Build-Tool stammen, das NVCC aufruft.

Wenn Sie bauen können mit GNU Make (z Unter Cygwin oder auf einem Linux/Unix/OS X-System), könnten Sie seine parallel building functionality, mit der -j-Option, die es mehrere Rezepte parallel zu verarbeiten verursacht.

Here is a nice blog post, die mehrere parallele Build-Optionen unter Windows aufzählt, von denen einige möglicherweise mit NVCC arbeiten.

Für ein echtes verteiltes/paralleles Build-System, das MSVC und NVCC unterstützt, können Sie versuchen Incredibuild.

+0

Ich interessiere mich für eine Lösung für Visual Studio. Der letzte Link listet zwei Möglichkeiten auf: den bereits erwähnten/MP und den noch langsameren/maxcpucount [: n]. –

+0

Ich habe einen Link zu Incredibuild hinzugefügt, was möglicherweise die einzige echte Lösung für Visual Studio ist. – harrism

2

können Sie verwenden IncrediBuild

Aber dieser Fehler auftreten kann:
schwerwiegender Fehler C1041: kann nicht geöffnet werden Programmdatenbank '...'; Wenn mehrere CL.EXE in dieselbe PDB-Datei schreiben, verwenden Sie bitte/FS

Um dies zu vermeiden, legen Sie bitte Projekt -> Eigenschaften -> CUDA C/C++ -> Host -> Zusätzliche Compiler-Optionen ->/FS.

Für mehr lesen auf this blog.

Verwandte Themen