gpt4 book ai didi

c++ - 如何在汇编级别分析 C++ 函数?

转载 作者:IT老高 更新时间:2023-10-28 22:04:56 25 4
gpt4 key购买 nike

我有一个功能是我的程序的瓶颈。它不需要访问内存,只需要计算。它是内部循环并被多次调用,因此对这个函数的任何小收获对我的程序来说都是巨大的胜利。

我具有在 PS3 上优化 SPU 代码的背景,您可以在其中获取 SPU 程序并通过管道分析器运行它,您可以将每个汇编语句放在自己的列中,并最大限度地减少函数所花费的周期数。然后你覆盖循环,这样你就可以进一步减少管道依赖。有了这个程序和每条汇编指令所花费的所有周期的列表,我可以比编译器更好地优化。

在不同的平台上,它有我可以注册的事件(缓存未命中、循环等),我可以运行该函数并跟踪 CPU 事件。那也不错。

现在我正在使用带有 Core i7 Intel 处理器的 Visual Studio C++ 2010 在 Windows 上做一个爱好项目。我没有足够的钱来证明支付 VTune 的巨额费用是合理的。

我的问题:

如何在 Windows 上为英特尔处理器在汇编级别分析函数?

我想编译、查看反汇编、获取性能指标、调整我的代码并重复。

最佳答案

有一些很棒的免费工具可用,主要是 AMD 的 CodeAnalyst(根据我在 i7 与我的 phenom II 上的经验,它在英特尔处理器上有点障碍,因为它无法访问直接的硬件特定计数器,尽管那可能是错误的配置)。

然而,一个鲜为人知的工具是 Intel Architecture Code Analyser (与 CodeAnalyst 一样免费),它类似于您描述的 spu 工具,因为它为您的程序组装逐行详细说明延迟、吞吐量和端口压力(基本上是请求分派(dispatch)到 ALU、MMU 等)。 Stan Melax 给了一个不错的 talk关于它和今年 GDC 上的 x86 优化,标题为“hotspots, flops and uops: to-the-metal cpu optimization”。

英特尔还有一些与 IACA 相同的工具,可在 their experimental/what-if code site 的性能调整部分下获得。 ,例如 PTU,它是(或曾经是)VTune 的实验性演变,据我所知,它是免费的。

在深入研究之前阅读英特尔优化手册也是一个好主意。

编辑:正如 Ben 所指出的,对于较旧的处理器,计时可能不正确,但使用 Agner Fog's Optimization manuals 可以很容易地弥补这一点。 ,其中还包含许多其他 gem 。

关于c++ - 如何在汇编级别分析 C++ 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com