【问题标题】:Cuda parallel code generation in Visual StudioVisual Studio 中的 Cuda 并行代码生成
【发布时间】:2013-07-13 12:13:17
【问题描述】:

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

我想知道是否有办法以类似的方式加速 NVCC。在包含 CUDA 内核的项目中使用 /MP 对编译时间没有任何好处,而且我只能看到一个内核在工作。

所以问题是:如何使用我的多核 PC 来加速 CUDA 编译?

【问题讨论】:

    标签: c++ visual-studio compilation cuda compilation-time


    【解决方案1】:

    从 CUDA 5.5 开始,nvcc 没有 MSVC 的 /MP 等效项,因此 .cu 文件的任何构建并行性都需要来自调用 NVCC 的构建工具。

    如果您可以使用 GNU Make 构建(例如在 Cygwin 下或在 Linux/Unix/OS X 系统上),您可以使用它的 parallel building functionality,使用 -j 选项,这会导致它并行处理多个配方.

    Here is a nice blog post 枚举 Windows 上的多个并行构建选项,其中一些可能适用于 NVCC。

    对于支持 MSVC 和 NVCC 的真正分布式/并行构建系统,您可以尝试Incredibuild

    【讨论】:

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

    您可以使用 IncrediBuild

    但可能会出现此错误:
    致命错误 C1041:无法打开程序数据库“...”;如果多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS

    为避免这种情况,请设置项目 -> 属性 -> CUDA C/C++ -> 主机 -> 附加编译器选项 -> /FS。

    更多信息请阅读this blog

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      相关资源
      最近更新 更多