考虑两个文件:
f1()
f1()
使用NVCC编译这些文件并提供两个exe(1.EXE,2.EXE)。 请注意,一个是.cpp,另一个是.cu
在分析期间,1.exe不显示未使用的函数f1,但在分析期间,2.exe显示未使用的函数f1。
为什么呢?为什么NVCC对.cu和.cpp文件的行为有所不同?
更新
我的困惑归结为: 我可以自动内联.cu文件中未使用的函数,可能使用了一些编译器选项吗?
答案 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中都没有编译。即使您包含库。
需要更具体的功能和操作系统。