【问题标题】:Is There An Exhaustive Profiler?有详尽的分析器吗?
【发布时间】:2017-05-08 05:59:08
【问题描述】:

相对而言,我经常看到人们在一台特定计算机的一个特定 CPU 上的特定情况下对特定代码段进行基准测试/分析(或建议其他人进行基准测试/分析);然后(可能是错误的)假设这个结果适用于不同情况下的代码(例如,不同负载下同一内核中的其他逻辑 CPU)在广泛的各种非常不同的 CPU(例如“所有 64 位 80x86”)上各种不同的计算机(例如,具有不同 RAM 时序等)。

我正在寻找的是一种能够在许多条件下(主要通过解释代码而不是直接测量)为许多 CPU 生成分析结果的分析器;然后使用权重因子(其中权重因子代表用户对每个测量案例的关心程度)组合所有结果,以创建实际有用且不会误导的结果。

是否有符合此描述的分析工具?

【问题讨论】:

  • 你好。您的问题是否更多关于 IPC 1 代码(brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html - “解释和可操作的项目”;您对 cpu-bound 还是 memory-bound 建模)?是关于单线程、多线程还是多线程性能?查看 RISC-V BOOM 论文,了解微架构设计/规划问题及其借助 FPGA 模型的加速搜索:www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-167.htmlpeople.eecs.berkeley.edu/~krste/papers/dgkim-msthesis.pdf 等。
  • 不同的活动在不同的环境中有不同的成本。在一种环境中,I/O 可能是主要成本,但在另一种环境中则不然。缓存未命中可能在一个中占主导地位,但在另一个中不占主导地位。内存分配 - 同样的事情。浮点数学 - 同样的事情。并行处理开销 - 同样的事情。因此,如果您想要一个万能的工具,就必须能够告诉它您想要为哪些环境提供答案。我想您认为权重可以做到这一点,但我的经验表明您无法提前知道类别需要是什么。

标签: optimization profiling


【解决方案1】:

我认为互联网上没有发布通用的性能预测工具;但可能会有一些内部 CPU 供应商来优化下一个微架构。

valgrind 二进制检测平台和callgrind/cachegrind(慢)简单模型分析器。 Callgrind 计算模型中的基本块执行,例如 1 条指令相当于 1 个 cpu 时钟; cachegrind 还使用一些 2 级 cache model 模拟内存访问,也可以模拟简单的 branch predictor。这两种工具都没有关于“所有 64 位 80x86”兼容 CPU 的供应商 1 和供应商 2 的现代 OOO CPU 的广泛解码/执行/退役功能的知识/模型(并且 OOO cpus 在基本 OOO 功能和性能方面相似)。

有几个 OOO CPU 模拟器的开源项目(从慢到非常慢),例如:基于 PTLsim(http://www.facom.ufms.br/~ricardo/Courses/CompArchII/Tools/PTLSim/PTLsimManual.pdf,2007)的 MARSSx86(http://marss86.org/,2012),或 Sniper Multi-Core Simulator(与Graphite 框架的帮助)。 (还有DRAMSim/DRAMSim2内存模拟器,是精确系统模拟所需要的,在其他几个模拟器项目中都有使用;可以选择在RISC-V Rocket-Chip模拟器中使用)

您可能对一些(非常非常慢 - 数十 KIPS)cycle-accurate simulator / microarchitecture simulator 感兴趣,但它们的开源变体并不多。有一些商业模拟器(例如在 ARM 世界中 - ARM Cycle Models / CPAKs;ARC nSIM,...);或 simplescalar.com。还有内部专有模拟器(我们无法访问它们)。

微架构/循环模拟器的唯一公开近似是供应商 1 的 IACA:https://software.intel.com/en-us/articles/intel-architecture-code-analyzer(针对短代码序列(如没有任何内存层次结构建模的内部循环)的 OOO 端口规划的不精确部分模型)。还有来自供应商 1 的其他工具“SDE”来估计/调试一些未来 CPU 指令扩展与旧 CPU 和 PIN 二进制重写工具:https://software.intel.com/en-us/articles/intel-software-development-emulator

【讨论】:

  • @Brendan,有用于嵌入式世界(ARM、MIPS、瑞萨、ARC、NIOS/Microblaze、PowerPC)的 OVP/OVPsim“170 多个高性能处理器模型的开放虚拟平台 (OVP) 库”: riscv.org/wp-content/uploads/2017/05/… 和速度声称像“平台的指令准确 (IA) 模拟”的 1 GIPS - www.ovpworld.org。不像开源那么开放,工具是仅二进制的,模型通过单击获得许可:“OVP 可免费用于非商业用途,希望用户......联系 OVPsim 开发人员,英佩拉斯。”
猜你喜欢
  • 2014-07-22
  • 2014-10-07
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
相关资源
最近更新 更多