被稱為英特爾體系結構代碼分析儀,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