.cpp和.cu文件的NVCC行为

时间:2012-09-14 10:51:05

标签: cuda

考虑两个文件:

  1. test.cpp:包含未使用的函数f1()
  2. test.cu:包含相同的未使用函数f1()
  3. 使用NVCC编译这些文件并提供两个exe(1.EXE,2.EXE)。 请注意,一个是.cpp,另一个是.cu

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

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

    更新

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

2 个答案:

答案 0 :(得分:1)

NVCC编译.cu文件本身并将.c和.cpp文件传递给系统的CC和CXX。承认两个不同的编译器可能会产生微小差异的代码。

答案 1 :(得分:1)

首先,功能是cuda功能还是cpp功能?您正在使用的操作系统是什么?

我尝试了几件事并发现了这一点。

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

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

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