我在Visual Studio 2012解决方案中有几个C++项目。这些项目包含大量文件和我使用/MP来加快代码生成。
我想知道是否有一种方法可以以类似的方式加速NVCC。在包含CUDA内核的项目中使用/MP在编译时间上没有任何好处,而且我只能看到一个内核在工作。
所以问题是:如何使用我的多核电脑来加速CUDA的编译?
从CUDA 5.5开始,nvcc
没有等效于MSVC的/MP,因此.cu文件的任何构建并行性都需要来自调用NVCC的构建工具。
如果您可以使用GNU Make进行构建(例如,在Cygwin下或在Linux/Unix/OS X系统上),则可以使用其并行构建功能,使用-j
选项,使其并行处理多个配方。
这是一篇很好的博客文章,列举了Windows上的多个并行构建选项,其中一些可能与NVCC一起使用。
对于支持MSVC和NVCC的真正分布式/并行构建系统,您可以尝试Incredbuild。
您可以使用IncrediBuild
但可能会出现以下错误:
致命错误C1041:无法打开程序数据库"…";如果多个CL.EXE写入同一.PDB文件,请使用/FS
为了避免这种情况,请设置"项目"->"属性"->"CUDA C/C++"->"主机"->"其他编译器选项"->/FS。
欲了解更多信息,请访问此博客。