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