我编写了一个以两种模式运行的程序,顺序和多线程,目的是在多个处理器架构上运行它,然后分析处理器的性能并进行比较。
有什么工具可以帮助我做到这一点?查找执行时间,跟踪线程及其抢占,查找哪个处理器执行哪个线程(如果在多核系统上),上下文切换开销和其他内容。
我已经具备使用 gprof 进行代码分析的基本知识,我认为这还不够。我正在寻找具有相同想法但功能更强大的东西!有什么帮助吗??
我编写了一个以两种模式运行的程序,顺序和多线程,目的是在多个处理器架构上运行它,然后分析处理器的性能并进行比较。
有什么工具可以帮助我做到这一点?查找执行时间,跟踪线程及其抢占,查找哪个处理器执行哪个线程(如果在多核系统上),上下文切换开销和其他内容。
我已经具备使用 gprof 进行代码分析的基本知识,我认为这还不够。我正在寻找具有相同想法但功能更强大的东西!有什么帮助吗??
要获取有关执行时间、缓存行为等的更多信息,有多种方法。确保首先创建一个稳定的计算环境。锁定处理器频率以获得可靠的测量结果,例如在 BIOS 中禁用 Intel SpeedStep;避免任何后台进程等。
低级性能计数器:
高级分析器:
请注意,以上所有内容也可以测量功耗。
或者,您可以通过在操作系统中创建线程切换跟踪来查看程序随时间的行为。看看 Eclipse 的 LTTng 集成。
如果您想查看有关代码实际并行行为的更多信息,例如可能抑制并行性、线程开销和缓存争用的数据依赖性,您可以从 Vector Fabrics 的 Pareon 上一试(免责声明:我是创始人之一矢量织物)。这不是分析器,而是用于并行化的更多代码分析。