Visual Studio 中的 Cuda 并行代码生成

13

我有几个C++项目在Visual Studio 2012方案中。 这些项目包含大量文件,我使用/MP加速代码生成。

我想知道是否有一种类似的方法来加速NVCC。 在包含CUDA内核的项目中使用/MP无法获得编译时间的好处,我只能看到一个核在工作。

因此问题是:如何利用我的多核PC加速CUDA编译?


不仅仅是在一个项目中按顺序编译CUDA源文件,更糟糕的是,在MSVC解决方案中,一个项目的CUDA编译会阻止其他项目(即使没有CUDA文件的项目)的并行构建。至少能否解决在一个解决方案中并行构建独立项目的问题? - undefined
2个回答

4
截至CUDA 5.5版本,nvcc没有与MSVC的/MP相当的功能,因此任何.cu文件的构建并行性都需要来自调用NVCC的构建工具。
如果您可以使用GNU Make进行构建(例如在Cygwin下或在Linux / Unix / OS X系统上),则可以使用其并行构建功能,使用-j选项,这会导致它并行处理多个recipes。 这篇不错的博客文章列举了Windows上的多个并行构建选项,其中一些可能适用于NVCC。
对于支持MSVC和NVCC的真正分布式/并行构建系统,您可以尝试Incredibuild

我对Visual Studio的解决方案很感兴趣。最后一个链接列出了两种可能性:已经提到的/MP和更慢的/maxcpucount[:n]。 - Nicola Pezzotti
我添加了一个指向Incredibuild的链接,这可能是目前Visual Studio唯一真正的解决方案。 - harrism

3
您可以使用IncrediBuild
但是可能会出现以下错误:
严重错误C1041:无法打开程序数据库'...';如果多个CL.EXE写入同一个.PDB文件,请使用/FS
为避免此错误,请设置项目->属性->CUDA C/C++->主机->其他编译器选项->/FS。
更多信息请阅读该博客

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接