2013-07-15 10 views
9

Mam kilka projektów C++ w Visual Studio 2012 rozwiązanie. Te projekty zawierają dużą liczbę plików i Używam /MP, aby przyspieszyć generowanie kodu.Generowanie kodu równoległego Cuda w Visual Studio

Zastanawiam się, czy istnieje sposób, aby przyspieszyć również NVCC w podobny sposób. Użycie/MP w projekcie zawierającym jądra CUDA nie przynosi żadnych korzyści w czasie kompilacji i widzę tylko jeden rdzeń w pracy.

Pytanie brzmi: jak mogę wykorzystać mój wielordzeniowy komputer do przyspieszenia kompilacji CUDA?

Odpowiedz

4

Od wersji CUDA 5.5, nvcc nie ma odpowiednika MSVC/MP, więc każdy paralelizm budowania plików .cu będzie musiał pochodzić z narzędzia do budowania, które wywołuje NVCC.

Jeśli można budować za pomocą GNU make (na przykład pod Cygwin lub na/Unix/Linux OS X Window System), można użyć jej parallel building functionality, korzystając z opcji -j, co powoduje to, aby przetwarzać wiele receptur równolegle.

Here is a nice blog post który wylicza wiele opcji kompilacji równolegle na Windows, z których niektóre mogą pracować z nvcc.

Dla prawdziwego rozproszonego/równoległego systemu kompilacji nośnej MSVC i nvcc, można spróbować Incredibuild.

+0

Interesuje mnie rozwiązanie dla Visual Studio. Ostatnia lista łączy dwie możliwości: już wspomniana/MP i jeszcze wolniej/maxcpucount [: n]. –

+0

Dodałem link do Incredibuild, który jest prawdopodobnie jedynym rzeczywistym rozwiązaniem dla Visual Studio. – harrism

2

Można użyć IncrediBuild

Ale ten błąd może wystąpić:
fatal error C1041: nie można otworzyć bazy danych programu '...'; jeśli wiele plików CL.EXE zapisuje do tego samego pliku .PDB, użyj/FS

Aby tego uniknąć, proszę ustawić Project -> Właściwości -> CUDA C/C++ -> Host -> Dodatkowe opcje kompilatora ->/FS.

Więcej informacji na this blog.

Powiązane problemy