我原来的程序,是所有函数全部放在同一个源文件里面,然后主函数在另外一个源文件里面(当然这个源文件也是整个程序的主体)。我觉得这样似乎一改一点点函数,就整个大源文件要重新编译,似乎速度也有点慢。
原来所有头文件的内容,包括结构体定义,函数声明,常数宏,系统头文件包含等等,统统放在一个头文件里,如今我把源文件拆开,头文件也都拆开,发现速度好像慢了许多。
cuda的那些头文件和源文件什么的,还是编译速度偏慢。
有没有经验丰富的cudaer能够告诉我,cuda的编译速度跟那些因素有关系?
我原来的程序,是所有函数全部放在同一个源文件里面,然后主函数在另外一个源文件里面(当然这个源文件也是整个程序的主体)。我觉得这样似乎一改一点点函数,就整个大源文件要重新编译,似乎速度也有点慢。
原来所有头文件的内容,包括结构体定义,函数声明,常数宏,系统头文件包含等等,统统放在一个头文件里,如今我把源文件拆开,头文件也都拆开,发现速度好像慢了许多。
cuda的那些头文件和源文件什么的,还是编译速度偏慢。
有没有经验丰富的cudaer能够告诉我,cuda的编译速度跟那些因素有关系?
因为我的程序在编写期间,肯定免不了经常改动,所以编译速度也比较重要
楼主你好!
CUDA普通程序编译需要cuda c/c++ compiler和host compiler的共同参与。
前者,速度一直较慢,没有好办法,建议更换最快的CPU.
后者,速度还行,以及有precompiled headers功能。
综合起来,建议更换更快CPU.
如果你的项目里面GPU Architecture选择了多个的话,你可以根据需要只留下需要的一个,这样似乎可以提升编译速度,因为工作量减少了。——注意,根据某来源的实测说法,这种改善微乎其微,基本没用,所以浮云了。
所以,还是建议升级CPU吧,以及,如果无法升级CPU的话,可以超频CPU神马的…@#$%^&*(被打晕拖走)
祝您编码愉快~
今天我看了一下c++编译技巧那些,发现有几个技巧有助于提高开发阶段中的编译速度:
每一个源文件作为一个编译单元,因此,只要这个源文件的代码,或者它include的头文件s中的代码有改变,它就要重新编译。
避免大量重新编译的关键,一是在于源文件要分散,避免一个函数改动,其他同文件的函数都要更改;其次,在于头文件不要全部都包含到一个总头文件中,用到哪个包含哪个,免得自定义的头文件一旦更改,所有包含过它的源文件都要全部重新编译。
是得,楼主你说的很对。
除了这个可以作为一般的技巧外。我还推荐楼主进行如下实验:
在VS下,用cuda toolkit 5.0自带的模板,评估下将10个kernel分散到10个.cu中编译。和集中到1个.cu中,rebuild一次的时间。
这个实验只是建议,可能会帮助你有效的评估自己的代码整理风格。当然,也可以不做这个实验。
已经从3分钟降到41秒……进步明显