VS2010中cuda工程,预编译成PTX问题

1、请问PTX文件只有.cu文件存在时才能够预编译成功吗?
2、现在遇到的问题时,工程中有多个C++文件,一个.cu文件,main函数在其中一个C++文件中,这套代码经过修改,所用到的是一个CUDA的库函数,而.cu文件并没有用到,如果不删掉.cu文件的话,每次编译程序,都会生成一个新的ptx文件,但是如果删掉.cu文件的话,就不会在生成新的PTX文件<当然,因为这个.CU文件用不到,所以删掉以后仍然可以正常运行,只是不会再有新的ptx文件生成了>,这是为什么?
3、而且很奇怪的是,我再把这个.cu文件加入到工程中以后,也不会再生成新的ptx文件了,这是为什么?
我刚刚接触PTX,实在不懂这个道理,求指点。

楼主您好,

您的工程中的原.cu可能使用了custom build(即原项目中的.cu的类型为自定义), 然后自定义命令行里有类似nvcc -ptx your.cu -o your.ptx的字样。

而您从项目中删除了此cu又添加后,此.cu将不再包含原来的自定义构建规则了。从而不再参与编译。

此外,将.cu添加到项目中,自定义生成.ptx或者.cubin,然后再将同名的.ptx/.cubin手工用driver api载入调用是driver api项目的常见做法,请勿惊慌。

感谢来访。