Skip to content

Commit 6b332d3

Browse files
committed
Update deploy containerized workloads with Topo
1 parent 3e7c54e commit 6b332d3

5 files changed

Lines changed: 113 additions & 173 deletions

File tree

content/learning-paths/cross-platform/deploy-containerized-workloads-with-topo/_index.md

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
---
22
title: Deploy containerized workloads to Arm-based Linux targets with Topo
33

4-
description: Use Topo to detect Arm processor capabilities on a target device, select a compatible container template, and deploy containerized workloads to Arm-based Linux targets over SSH using the CLI or VS Code extension.
4+
description: Use Topo to detect Arm processor capabilities on a target device, select a compatible Topo Project, and deploy containerized workloads to Arm-based Linux targets over SSH using the CLI or VS Code extension.
55

66
minutes_to_complete: 30
77

88
who_is_this_for: This is an introductory topic for embedded, edge, and cloud software developers who want to deploy containerized workloads to Arm-based Linux targets using Topo.
99

1010
learning_objectives:
1111
- Install Topo and verify that the host and target environments are ready for deployment
12-
- Run health checks and generate a target description to identify compatible Arm processor features and templates
13-
- Clone a Topo template and deploy a containerized workload to an Arm-based Linux target
14-
- (Optional) Use the Topo VS Code extension to run the same target, template, and deployment workflow from Visual Studio Code
12+
- Run health checks and list compatible projects for your target
13+
- Clone a Topo Project and deploy a containerized workload to an Arm-based Linux target
14+
- (Optional) Use the Topo VS Code extension to run the same target, project, and deployment workflow from Visual Studio Code
1515
- (Optional) Deploy firmware and applications to heterogeneous Cortex-A + Cortex-M devices using remoteproc-runtime
1616

1717
prerequisites:
@@ -39,9 +39,8 @@ generated_summary_faq:
3939
summary: >-
4040
You'll use Topo to deploy containerized workloads to Arm-based Linux targets
4141
over SSH. You'll install Topo on a host machine, run a health check to validate host and target
42-
readiness, and generate a target description so Topo can detect Arm CPU features such as Neon
43-
and SVE and match compatible templates. You'll then clone a starter template using an
44-
LLM chatbot example, accept default build prompts, and deploy. Topo builds the container image
42+
readiness, and list projects compatible with the target's Arm CPU features and hardware capabilities.
43+
You'll then clone a starter project using an LLM chat example and deploy. Topo builds the container image
4544
on the host, transfers it to the target, and starts the services on the target; it can also
4645
build directly on the target. You'll also see how to run the same workflow using
4746
the Topo Visual Studio Code extension.
@@ -55,16 +54,14 @@ generated_summary_faq:
5554
answer: >-
5655
Pass `--target` to the Topo command or set `TOPO_TARGET` in your environment. The health check
5756
output prompts you when a target is not specified.
58-
- question: How does Topo determine if a template is compatible with my Arm target?
57+
- question: How does Topo determine if a project is compatible with my Arm target?
5958
answer: >-
6059
Topo detects hardware capabilities on the target, including Arm CPU features such as Neon and
61-
SVE, and uses them to identify compatible templates. Generating a target description helps
62-
guide template selection.
63-
- question: What should I expect when cloning the example template and responding to prompts?
60+
SVE, and uses them to identify compatible projects when you run `topo projects --target`.
61+
- question: What should I expect when cloning the example project and responding to prompts?
6462
answer: >-
65-
Clone the LLM chatbot template with `topo clone` and press Enter to accept the default build
66-
arguments. The default configuration uses the `bartowski/Qwen_Qwen3.5-0.8B-GGUF` model and
67-
builds with Neon optimizations.
63+
Clone the LLM chat project with `topo clone`. The default configuration uses the
64+
`unsloth/SmolLM2-135M-Instruct-GGUF` model and can be deployed immediately.
6865
- question: Where are images built and what happens after deployment starts?
6966
answer: >-
7067
Topo builds container images on the host, transfers them to the target over SSH, and starts
@@ -108,8 +105,8 @@ further_reading:
108105
link: https://github.com/arm/topo
109106
type: documentation
110107
- resource:
111-
title: Topo template format
112-
link: https://github.com/arm/topo-template-format
108+
title: Topo Project specification
109+
link: https://github.com/arm/topo/tree/main/docs/project-specification
113110
type: documentation
114111
- resource:
115112
title: Topo releases

content/learning-paths/cross-platform/deploy-containerized-workloads-with-topo/assess-compatibility.md

Lines changed: 33 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -132,99 +132,70 @@ topo install remoteproc-runtime --target user@my-target
132132
Run the health command again to verify installation. Topo uses `remoteproc-runtime` internally when deploying to heterogeneous devices.
133133

134134

135-
## Generate a target description
135+
## Understand target compatibility
136136

137-
Ask Topo to probe your target and output a description of the hardware in your terminal.
137+
Topo probes the target during health checks and project listing. It uses target details such as the CPU architecture, Arm CPU features, memory, and remote processor support to determine which Topo Projects are compatible.
138138

139-
On your host device, run:
139+
The hardware feature list mirrors CPU feature flags reported by the Linux kernel. Key flags include `fp` (hardware floating-point), `asimd` (Neon Advanced SIMD — 128-bit vector acceleration), and `aes` (hardware AES encryption). Topo uses this information to determine which projects are compatible with your target.
140140

141-
```bash
142-
topo describe --target user@my-target
143-
```
144-
145-
The output captures details such as CPU architecture features, which Topo uses to select compatible templates.
146-
147-
The following is an example snippet from an AWS Graviton-based instance, showing the main processor and its features, an absence of any remote or auxiliary processors, and the total memory:
148-
149-
```output
150-
host:
151-
- model: Neoverse-V1
152-
cores: 4
153-
features:
154-
- fp
155-
- asimd
156-
- evtstrm
157-
- aes
158-
...
159-
remoteprocs: []
160-
totalmemory_kb: 16044280
161-
```
162-
163-
The `features` list mirrors the CPU feature flags reported by the Linux kernel. Key flags include `fp` (hardware floating-point), `asimd` (Neon Advanced SIMD — 128-bit vector acceleration), and `aes` (hardware AES encryption). Topo uses this feature list to determine which templates are compatible with your target.
141+
## List projects compatible with your target
164142

165-
## List templates compatible with your target
143+
Because Topo can identify the capabilities of your target device, it can also advise on the compatibility of projects.
166144

167-
Because Topo can identify the capabilities of your target device, it can also advise on the compatibility of templates.
168-
169-
Use the following command on your host device to list compatible templates:
145+
Use the following command on your host device to list compatible projects:
170146

171147
```bash
172-
topo templates --target user@my-target
148+
topo projects --target user@my-target
173149
```
174150

175151
The following is an example output for an AWS Graviton-based instance:
176152

177153
```output
178-
✅ topo-welcome | https://github.com/Arm-Examples/topo-welcome.git | main
154+
Hello World
155+
Clone:
156+
topo clone https://github.com/Arm-Examples/topo-welcome.git#main
157+
179158
A minimal "Hello, World" web app for validating a Topo setup and deployment.
180159
It runs a single service that exposes a web page on the target,
181160
with the greeting text customizable via the GREETING_NAME parameter.
182161
183-
❌ topo-lightbulb-moment | https://github.com/Arm-Examples/topo-lightbulb-moment.git | main
184-
Features: remoteproc-runtime
162+
Lightbulb Moment
163+
Clone:
164+
topo clone https://github.com/Arm-Examples/topo-lightbulb-moment.git#main
165+
Features:
166+
remoteproc-runtime
167+
185168
Reads a switch over GPIO pins on an M class cpu, reports switch state over
186169
Remoteproc Message, then a web application on the A class reads this and
187170
displays a lightbulb in either the on or off state. The lightbulb state is
188171
described by an LLM in any user-specified style.
189172
190-
✅ topo-cpu-ai-chat | https://github.com/Arm-Examples/topo-cpu-ai-chat.git | main
191-
Features: SVE, NEON
192-
Complete LLM chat application optimized for Arm CPU inference.
173+
Topo llama.cpp WebUI Chat
174+
Clone:
175+
topo clone https://github.com/Arm-Examples/topo-llama-web-ui.git#main
193176
194-
This project demonstrates running large language models on CPU
195-
using llama.cpp compiled with Arm baseline optimizations and
196-
accelerated using NEON SIMD and SVE (when supported and enabled).
177+
LLM chat application with Arm CPU inference provided by llama.cpp.
197178
198-
The stack includes:
199-
- llama.cpp server with Arm NEON optimizations (SVE optional)
200-
- Quantized Qwen2.5-1.5B-Instruct model bundled in the image (~1.12 GB)
201-
- Simple web-based chat interface
202-
- No GPU required - pure CPU inference
179+
This project demonstrates running large language models on CPU
180+
with inference provided by the llama.cpp server.
203181
204-
Perfect for demos and testing! The bundled Qwen2.5-1.5B model allows the
205-
project to run immediately without downloading additional models.
182+
The upstream Linux Arm64 image includes architecture-specific CPU
183+
backend variants for Armv8.0 baseline, Armv8.2 dot product/FP16/SVE,
184+
Armv8.6 int8 matrix multiply/SVE2, and Armv9.2 SME-capable CPUs.
206185
207-
Ideal for testing LLM workloads on Arm hardware without GPU dependencies,
208-
showcasing how far you can push NEON acceleration. Rebuild with SVE enabled
209-
when wider vectors are available.
186+
SIMD Visual Benchmark
187+
Clone:
188+
topo clone https://github.com/Arm-Examples/topo-simd-visual-benchmark.git#main
189+
Features:
190+
SVE
210191
211-
✅ topo-simd-visual-benchmark | https://github.com/Arm-Examples/topo-simd-visual-benchmark.git | main
212-
Features: NEON, SVE
213192
Visual demonstration of SIMD performance benefits on Arm processors.
214193
Compare scalar (no SIMD), NEON (128-bit), and SVE (scalable vector)
215194
implementations running identical image processing workloads side-by-side.
216-
217-
This demo shows real hardware acceleration through three C++ services
218-
compiled with different architecture flags, processing the same box blur
219-
algorithm on images. Performance differences are measured in real-time
220-
and displayed in an interactive web dashboard.
221-
222-
Perfect for demonstrating to non-technical audiences the concrete benefits
223-
of SIMD optimizations, with visual results and quantified speedups.
224195
```
225196

226-
In this example, `topo-lightbulb-moment` is marked as incompatible, because it requires an SoC with both a Cortex-A and a Cortex-M. The instance contains Arm Neoverse cores only. All other templates are marked as compatible. You might see different results depending on the target hardware you use.
197+
When you provide `--target`, Topo marks each project according to compatibility with your target. For example, `topo-lightbulb-moment` requires `remoteproc-runtime`, so it is incompatible with targets that don't provide a supported remote processor environment. You might see different results depending on the target hardware you use.
227198

228199
## What you've accomplished and what's next
229200

230-
You have now verified your host and target environments, resolved any missing dependencies, and optionally enabled heterogeneous deployment. You also generated a description of your target's hardware features and identified compatible templates. Next, you'll choose a template containerized workload and deploy it to your target.
201+
You have now verified your host and target environments, resolved any missing dependencies, and optionally enabled heterogeneous deployment. You also identified compatible projects for your target. Next, you'll choose a containerized workload project and deploy it to your target.

0 commit comments

Comments
 (0)