12

Visual Studio 2012 ソリューションにいくつかの C++ プロジェクトがあります。これらのプロジェクトには大量のファイルが含まれており、/MPを使用してコード生成を高速化しています。

同様の方法でNVCCも高速化する方法があるかどうか疑問に思っていました。CUDA カーネルを含むプロジェクトで /MP を使用しても、コンパイル時間にメリットはなく、1 つのコアしか動作していません。

問題は、マルチコア PC を使用して CUDA コンパイルを高速化するにはどうすればよいかということです。

4

2 に答える 2

4

CUDA 5.5 の時点ではnvcc、MSVC の /MP に相当するものがないため、.cu ファイルのビルド並列処理は、NVCC を呼び出すビルド ツールから取得する必要があります。

GNU Make を使用してビルドできる場合 (たとえば、Cygwin または Linux/Unix/OS X システムで)、オプションを使用して並列ビルド機能を使用-jできます。これにより、複数のレシピが並列で処理されます。

これは、Windows での複数の並列ビルド オプションを列挙した素敵なブログ投稿です。そのうちのいくつかは NVCC で動作する可能性があります。

MSVC と NVCC をサポートする真の分散/並列ビルド システムについては、 Incredibuildを試すことができます。

于 2013-07-16T13:12:43.290 に答える
3

IncrediBuildを使用できます

ただし、次のエラーが発生する可能性があります。
致命的なエラー C1041: プログラム データベース '...' を開けません。複数の CL.EXE が同じ .PDB ファイルに書き込む場合は、/FS を使用してください

これを回避するには、Project -> Properties -> CUDA C/C++ -> Host -> Additional Compiler Options -> /FS を設定してください。

詳細については、このブログを参照してください。

于 2015-12-25T21:05:30.407 に答える