我必须更改一个在一个函数内有很多循环的 C/C++ 程序。我必须添加 cuda 功能。
在我开始进行更改之前,我想花时间检查所有找到的循环。但我没有找到任何能做到这一点的分析程序。最好的方法是什么。我在linux上。如果您有任何解决方案,请告诉我。
在这里你会找到一个工具的例子,它可以制作我想要的东西,但我没有找到它或类似的东西:http ://carbon.ucdenver.edu/~dconnors/papers/wbia06-loopprof.pdf
我会使用gperftools
, 并找出代码大部分时间花在哪里。一旦你确定了一个函数或函数的一部分,你可能就完成了。准确了解函数中哪些指令是“最重的”将需要针对该特定循环长时间运行测试用例,以便分析器可以为循环中的每条指令(或至少大多数指令)获取足够的数据。但是,如果您想用另一种技术替换代码,实际上分析到指令可能并不相关——替换几行代码的一个循环不太可能有太大帮助,因为开销太大。相反,您想占用更大的块并将其移至 CUDA。