What is IACA and how do I use it?
IACA, short for Intel Architecture Code Analyzer, is a discontinued static analysis tool developed by Intel. It allows the analysis of code scheduling on modern Intel processors.
Capabilities
IACA can compute:
-
Throughput: Maximum throughput of an innermost loop
-
Latency: Minimum latency from first to last instruction
-
Trace: Progress of instructions through pipeline stages
Supported Platforms and Code Formats
- Processor versions: Nehalem, Westmere, Sandy Bridge, Ivy Bridge, Haswell, Broadwell, Skylake (up to version 2.3), Haswell, Broadwell, Skylake (version 3.0)
- Code formats: C/C , x86 assembler
Limitations
-
EOL: IACA reached end-of-life in 2019
- Ignores unsupported instructions
- Does not support non-innermost loops in throughput mode
Usage: C/C
- Include iacaMarks.h in your code
- Insert start and end markers around the innermost loop
- Rebuild the code with optimizations enabled
Usage: Assembly (x86)
- Manually insert magic byte patterns for start and end markers
Analysis:
- Provide the code binary with inserted markers
- Invocation command: iaca.sh -arch -graph -64 foo
- : Specific processor architecture
- : Generates a visual dependency graph using Graphviz
Output:
-
Text report showing:
- Throughput or latency analysis
- Port binding and pressure analysis
- Cycle breakdown for each instruction
- Dependency graph (if specified)
The above is the detailed content of What is Intel Architecture Code Analyzer (IACA) and how can I use it to analyze code performance?. For more information, please follow other related articles on the PHP Chinese website!