0

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


最后我发现其中一个数组分配存在问题。虽然命令行没有产生任何问题,但 nsight 确实存在。

4

1 回答 1

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),生成的代码可能略有不同。

无论如何,您的代码很可能有一些错误,这些错误会在不同的编译设置下表现出来。我建议在您的程序上运行CUDA memcheck以确保没有隐藏的错误。

于 2013-01-08T17:10:10.303 回答