2013-07-02 34 views
0

我在两台不同的机器上编译的相同CUDA内核的计算时间差异约为3-4倍。两个版本都运行在同一台机器和GPU设备上。解释差异的直接结论是不同的编译器设置。虽然没有一个完美的设置,并且调整应该根据内核来定制,但我不知道是否有明确的指导方针来帮助选择正确的设置。我使用Visual Studio 2010.谢谢。visual studio编译器设置对CUDA内核性能的影响

回答

2
  1. 如果您想要最快的性能,请在发布模式而不是调试模式下编译。传递给nvcc编译器的-G开关通常会对GPU代码性能产生负面影响。
  2. 通常建议为正在编译的GPU选择正确的体系结构。例如,如果您具有cc 2.1功能的GPU,请确保将设置(GPU代码设置中的sm_21)传递给编译器。有一些反例的例子(例如编译cc 2.0似乎跑得更快等),但作为一般性建议,这是最好的。
  3. 使用最新版本的CUDA(编译器)。当使用GPU库(CUFFT,CUBLAS等)时,这一点尤其重要(是的,这实际上并不是一个编译器设置)
+0

虽然很明显,但我也会说编译器优化很重要('O1','O2 ',...):-) – JackOLantern

+0

我同意,虽然我认为这主要是一个主机编译器标志,而且问题似乎是在询问CUDA内核的性能。在我有限的测试中,我没有看到ptx代码生成从'-O0'到'-O3'的显着差异,尽管我肯定有兴趣证明是错误的。如果我们正在谈论VS代码的主机编译器优化,那么可能还有其他许多优化。 –

+0

谢谢@RobertCrovella,-G旗是一个很好的观点。 – ramino