Learn about Large System Extensions
Introduction
Introduction to Large System Extensions
Deploy an example C program
Next Steps
Learn about Large System Extensions
Who is this for?
This is an introductory topic for software developers who want to learn about Large System Extensions (LSEs) and use them in an application.
What will you learn?
Upon completion of this Learning Path, you will be able to:
- Understand LSEs.
- Find out if an application uses LSE.
Prerequisites
Before starting, you will need the following:
- Access to an AWS Graviton-based instance, an Arm AGI CPU platform, or other Arm Linux computers with LSE support
Summary
This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
You’ll explore how LSEs support atomic operations on many-core systems. First, you’ll create a C program that uses C11 threads and standard atomics for concurrent updates, then compile and run it on Arm Linux. You’ll compare atomic and non-atomic counters under contention and inspect the compiled output. Finally, you’ll verify whether your compiler generated LSE instructions for the target system.
Frequently asked questions
These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
Save the program as
atomic.c. Include stdio.h, threads.h, and stdatomic.h.You’ll create 10 threads, with each thread performing 1,000 increments of both the non-atomic and atomic counters.
Confirm that the atomic counter reports the total increments across all threads. Your non-atomic counter can report a different value because concurrent updates create data races.
Run the
objdump command and check its count of LSE atomic instructions. You can also inspect the disassembly for instructions such as ldaddal.Run
sudo dmesg | grep LSE and look for a message that reports detected LSE atomic instructions. You can also run lscpu | grep Flags. The atomics flag indicates LSE support.