被称为英特尔体系结构代码分析仪,IACA是用于评估针对Intel CPU的代码调度的高级工具。它以三种模式运行:
吞吐量模式:
iaca iaca衡量最大的吞吐量,假设它是嵌套循环的主体。Usage:
输出解释:输出报告提供了有关目标代码的调度和瓶颈的详细信息。例如,请考虑以下汇编片段:
。l2: vmovaps ymm1,[rdi rax]; l2 vfmadd231ps ymm1,ymm2,[rsi rax]; l2 vmovaps [rdx rax],ymm1; S1 添加RAX,32;添加 jne .l2; jmp
通过插入此代码并分析标记,IACA可能会报告(删节):吞吐量分析报告 ------------------------------------ 块吞吐量:1.55循环吞吐量瓶颈:前端,port2_agu,port3_agu [港口压力故障] | 操作说明 ------------------------------------------------------------------------------ | | vmovaps ymm1,ymmword ptr [rdi rax*1] | 0.5 cp | | 1.5 cp | vfmadd231ps ymm1,ymm2,ymmword ptr [rsi rax*1] | 1.5 cp | vmovaps ymmword ptr [rdx rax*1],ymm1 | 1 cp | 添加RAX,0x20 | 0 CP | jnz 0xffffffffffffffffffffec 从此输出中,IACA将Haswell Frontend和Port 2和3的Agu标识为瓶颈。 It suggests that optimizing the store instruction to be processed by Port 7 could improve performance.
Limitations:
/* C or C Usage */ while(cond){ IACA_START /* Innermost Loop Body */ /* ... */ } IACA_ENDIACA has some limitations:
It does not support certain instructions, which are ignored in analysis.
It is compatible with CPUs from Nehalem向后,不包括较旧的型号。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3