# [Profile llama.cpp performance with Arm Streamline and KleidiAI LLM kernels](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/)
- [Overview](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/1_overview/)
- [Explore llama.cpp architecture and the inference workflow](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/2_llama.cpp_intro/)
- [Integrate Streamline Annotations into llama.cpp](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/3_llama.cpp_annotation/)
- [Analyze token generation performance with Streamline profiling](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/4_analyze_token_prefill_decode/)
- [Implement operator-level performance analysis with Annotation Channels](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/5_operator_deepdive/)
- [Examine multi-threaded performance patterns in llama.cpp](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/6_multithread_analyze/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/_next-steps/)

## About this Learning Path

| Skill level:    | Advanced       |
|------------------|----------------|
| Reading time:    | 1 hr           |
| Last updated:    | 17 Jun 2026    |

| Authors:         | Zenon Zhilong Xiu, Arm  [LinkedIn](https://linkedin.com/in/zenon-zhilong-xiu-491bb398) |
|------------------|---------------------------------------------------------------------------------------|
|                  | Odin Shen, Arm [GitHub](https://github.com/odincodeshen) [LinkedIn](https://linkedin.com/in/odin-shen-lmshen) |

| Arm IP:         | [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors), [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) |
 
| Tags:           | [ML](https://learn.arm.com/tag/ml), [Linux](https://learn.arm.com/tag/linux), [Android](https://learn.arm.com/tag/android), [Arm Streamline](https://learn.arm.com/tag/arm-streamline), [CPP](https://learn.arm.com/tag/cpp), [llama.cpp](https://learn.arm.com/tag/llama.cpp), [Profiling](https://learn.arm.com/tag/profiling) |

## Who is this for?
This is an advanced topic for software developers, performance engineers, and AI practitioners who want to optimize llama.cpp performance on Arm-based CPUs.

## What will you learn?
Upon completion of this Learning Path, you will be able to:
- Profile llama.cpp architecture and identify the role of the Prefill and Decode stages
- Integrate Streamline Annotations into llama.cpp for fine-grained performance insights
- Capture and interpret profiling data with Streamline
- Analyze specific operators during token generation using Annotation Channels
- Evaluate multi-core and multi-thread execution of llama.cpp on Arm CPUs

## Prerequisites
Before starting, you will need the following:
- Basic understanding of llama.cpp
- Understanding of transformer models
- Knowledge of Arm Streamline usage
- An Arm Neoverse or Cortex-A hardware platform running Linux or Android
