Cuda / nsight的输出与命令行(nvcc)输出不同

时间:2013-01-06 05:44:11

标签: cuda

我使用nvcc命令运行代码并且它提供了正确的输出但是当我在nsight eclipse上运行相同的代码时它输出错误。任何人都知道为什么会出现这种情况。


最后我发现其中一个数组分配存在问题。虽然命令行没有出现任何问题但是nsight会这样做。

1 个答案:

答案 0 :(得分:1)

Nsight EE通过基于项目设置生成make文件并通过调用OS make实用程序来构建项目来构建项目。它使用的是PATH中的nvcc编译器,但它依赖于NVCC编译器5.0中引入的一些新选项(这是同一工具包发行版的一部分)。

请在Nsight Eclipse中进行干净的重建 - 它将打印出用于构建应用程序的命令行。然后,您可以将该命令行与您在外部使用的命令行进行比较。可能的区别是:

  1. 在调试和发布模式下构建时,Nsight指定调试标志和优化标志。
  2. 默认情况下,Nsight将新项目设置为针对系统上检测到的硬件进行构建。 NVCC默认为SM 1.0。
  3. 确保Nsight和命令行使用的编译器是同一个。您的系统上可能安装了不同的编译器(例如4.x和5.0),可能会生成略有不同的代码。
  4. 在任何情况下,您的代码都可能存在一些错误,这些错误会在不同的编译设置下显示出来。我建议您在程序中运行CUDA memcheck以确保没有隐藏的错误。