2

考虑两个文件:

  1. test.cpp : 包含一个未使用的函数f1()
  2. test.cu:包含相同的未使用函数f1()

这些文件使用 NVCC 编译并提供两个 exe(1.EXE、2.EXE)。请注意,一个是 .cpp,另一个是 .cu

在分析过程中,1.exe 不显示未使用的函数 f1,但在分析过程中,2.exe 显示未使用的函数 f1。

为什么?为什么 NVCC 对 .cu 和 .cpp 文件的行为不同?

更新:

我的困惑归结为:我可以自动内联 .cu 文件中未使用的函数,可能正在使用一些编译器选项吗?

4

2 回答 2

1

NVCC 自己编译 .cu 文件并将 .c 和 .cpp 文件传递​​给系统的 CC 和 CXX。承认两个不同的编译器可能会生成有细微差别的代码。

于 2012-09-14T12:51:05.080 回答
1

一、函数是cuda函数还是cpp函数?您使用的是什么操作系统?

我已经尝试了几件事并找到了这个。

如果是 cpp 函数,nvcc (.cu) 和 gcc (.cpp) 都可以正常编译和运行代码。而且,如果您使用的是 Ubuntu,则表明该功能未使用。(.cu 和 .cpp)。如果您使用的是 VS10,它不会显示任何警告。

如果它是 cuda 函数,则 nvcc 可以正常工作。但是,.cpp 文件在 VS10 和 Ubuntu 中都不能编译。即使您包含库。

需要更具体的功能和操作系统。

于 2012-09-14T16:46:44.053 回答