Skip to content

Commit 9b809fc

Browse files
Merge branch 'ArmDeveloperEcosystem:main' into MLOps_GH_runners
2 parents 6a769b6 + 9f39fb9 commit 9b809fc

File tree

23 files changed

+533
-235
lines changed

23 files changed

+533
-235
lines changed

content/install-guides/java.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,20 @@ To print the final values of the flags after the JVM has been initialized, run:
234234
java -XX:+PrintFlagsFinal -version
235235
```
236236

237+
Generally the biggest performance improvements from JVM flags can be obtained from heap and garbage collection (GC) tuning, as long as you understand your workload well.
238+
239+
Default initial heap size is 1/64th of RAM and default maximum heap size is 1/4th of RAM. If you know your memory requirements, you should set both of these flags to the same value (e.g. `-Xms12g` and `-Xmx12g` for an application that uses at most 12 GB). Setting both flags to the same value will prevent the JVM from having to periodically allocate additional memory. Additionally, for cloud workloads max heap size is often set to 75%-85% of RAM, much higher than the default setting.
240+
241+
If you are deploying in a cloud scenario where you might be deploying the same stack to systems that have varying amounts of RAM, you might want to use `-XX:MaxRAMPercentage` instead of `-Xmx`, so you can specify a percentage of max RAM rather than a fixed max heap size. This setting can also be helpful in containerized workloads.
242+
243+
Garbage collector choice will depend on the workload pattern for which you're optimizing.
244+
245+
* If your workload is a straightforward serial single-core load with no multithreading, the `UseSerialGC` flag should be set to true.
246+
* For multi-core small heap batch jobs (<4GB), the `UseParallelGC` flag should be set to true.
247+
* The G1 garbage collector (`UseG1GC` flag) is better for medium to large heaps (>4GB). This is the most commonly used GC for large parallel workloads, and is the default for high-core environments. If you want to optimize throughput, use this one.
248+
* The ZGC (`UseZGC` flag) has low pause times, which can drastically improve tail latencies. If you want to prioritize response time at a small cost to throughput, use ZGC.
249+
* The Shenandoah GC (`UseShenandoahGC` flag) is still fairly niche. It has ultra low pause times and concurrent evacuation, making it ideal for low-latency applications, at the cost of increased CPU use.
250+
237251
## Are there other tools commonly used in Java projects?
238252

239253
There are a number of Java-related tools you might like to install.

content/install-guides/streamline-cli.md

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -68,29 +68,73 @@ Arm recommends that you profile an optimized release build of your application,
6868

6969
If you are using the `workflow_topdown_basic option`, ensure that your application workload is at least 20 seconds long, in order to give the core time to capture all of the metrics needed. This time increases linearly as you add more metrics to capture.
7070

71-
## Install Streamline CLI Tools
71+
## Using Python scripts
7272

73-
1. Download and extract the Streamline CLI tools on your Arm server:
73+
The Python scripts provided with Streamline CLI tools require Python 3.8 or later, and depend on several third-party modules. We recommend creating a Python virtual environment containing these modules to run the tools.
74+
75+
Create a virtual environment:
76+
77+
```sh
78+
# From Bash
79+
python3 -m venv sl-venv
80+
source ./sl-venv/bin/activate
81+
```
82+
83+
The prompt of your terminal has (sl-venv) as a prefix indicating the virtual environment is active.
84+
85+
{{% notice Note%}}
86+
The instructions assume that you run all Python commands from inside the virtual environment.
87+
{{% /notice %}}
88+
89+
## Installing the tools {.reference}
90+
91+
The Streamline CLI tools are available as a standalone download to enable easy integration in to server workflows.
92+
93+
To download the latest version of the tool and extract it to the current working directory you can use our download utility script:
94+
95+
```sh
96+
wget https://artifacts.tools.arm.com/arm-performance-studio/Streamline_CLI_Tools/get-streamline-cli.py
97+
python3 get-streamline-cli.py install
98+
python3 -m pip install -r ./streamline_cli_tools/bin/requirements.txt
99+
```
100+
101+
If you want to add the Streamline tools to your search path:
102+
103+
```sh
104+
export PATH=$PATH:$PWD/streamline_cli_tools/bin
105+
```
106+
107+
The script can also be used to download a specific version, or install to a user-specified directory:
108+
109+
* To list all available versions:
74110

75111
```sh
76-
wget https://artifacts.tools.arm.com/arm-performance-studio/2024.3/Arm_Streamline_CLI_Tools_9.2.2_linux_arm64.tgz 
77-
tar -xzf Arm_Streamline_CLI_Tools_9.2.2_linux_arm64.tgz 
112+
python3 get-streamline-cli.py list
78113
```
79114

80-
1. The `sl-format.py` Python script requires Python 3.8 or later, and depends on several third-party modules. We recommend creating a Python virtual environment containing these modules to run the tools. For example:
115+
* To download, but not install, a specific version:
81116

82117
```sh
83-
# From Bash
84-
python3 -m venv sl-venv
85-
source ./sl-venv/bin/activate
118+
python3 get-streamline-cli.py download --tool-version <version>
119+
```
120+
121+
* To download and install a specific version:
86122

87-
# From inside the virtual environment
88-
python3 -m pip install -r ./streamline_cli_tools/bin/requirements.txt
123+
```sh
124+
python3 get-streamline-cli.py install --tool-version <version>
89125
```
90126

91-
{{% notice Note%}}
92-
The instructions in this guide assume you have added the `<install>/bin/` directory to your `PATH` environment variable, and that you run all Python commands from inside the virtual environment.
93-
{{% /notice %}}
127+
* To download and install to a specific directory
128+
129+
```sh
130+
python3 get-streamline-cli.py install --install-dir <path>
131+
```
132+
133+
For manual download, you can find all available releases here:
134+
135+
```sh
136+
https://artifacts.tools.arm.com/arm-performance-studio/Streamline_CLI_Tools/
137+
```
94138

95139
## Applying the kernel patch
96140

@@ -135,10 +179,10 @@ Follow these steps to integrate these patches into an RPM-based distribution's k
135179
136180
1. Install the RPM build tools:
137181
138-
```
182+
```sh
139183
sudo yum install rpm-build rpmdevtools
140184
```
141-
185+
142186
1. Remove any existing `rpmbuild` directory, renaming as appropriate:
143187
144188
```sh
@@ -150,18 +194,21 @@ Follow these steps to integrate these patches into an RPM-based distribution's k
150194
```sh
151195
yum download --source kernel
152196
```
197+
153198
1. Install the sources binary:
154199
155200
```sh
156201
rpm -i kernel-<VERSION>.src.rpm
157202
```
158203
159204
1. Enter the `rpmbuild` directory that is created:
205+
160206
```sh
161207
cd rpmbuild
162208
```
163209
164210
1. Copy the patch into the correct location. Replace the 9999 patch number with the next available patch number in the sequence:
211+
165212
```sh
166213
cp vX.Y-combined.patch SOURCES/9999-strobing-patch.patch
167214
```

content/learning-paths/microcontrollers/cmsis-dsp/cmsis-dsp-tests.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ weight: 5 # 1 is first, 2 is second, etc.
77
# Do not modify these elements
88
layout: "learningpathall"
99
---
10-
The [CMSIS-DSP tests](https://github.com/ARM-software/CMSIS-DSP/blob/main/Testing) are publicly available, and are used for validation of the library. They can be run on the [Corstone-300](https://developer.arm.com/Processors/Corstone-300) Fixed Virtual Platform (FVP).
10+
The [CMSIS-DSP tests](https://github.com/ARM-software/CMSIS-DSP/blob/main/Testing) are publicly available, and are used for validation of the library. They can be run on the [Corstone reference systems](https://www.arm.com/products/silicon-ip-subsystems/), for example [Corstone-300](https://developer.arm.com/Processors/Corstone-300) Fixed Virtual Platform (FVP).
1111

1212
These tests are primarily for Arm internal use, but users can replicate if they wish. Else proceed to the [next step](/learning-paths/microcontrollers/cmsis-dsp/_review/).
1313

content/learning-paths/microcontrollers/iot-sdk/_next-steps.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ recommended_path: "/learning-paths/microcontrollers/tfm"
1414
# further_reading links to references related to this path. Can be:
1515
# Manuals for a tool / software mentioned (type: documentation)
1616
# Blog about related topics (type: blog)
17-
# General online references (type: website)
17+
# General online references (type: website)
1818

1919
further_reading:
2020
- resource:
@@ -25,6 +25,10 @@ further_reading:
2525
title: Arm Speech Recognition Total Solution example video, using the Arm Open IoT SDK, Corstone-310 and AVH
2626
link: https://devsummit.arm.com/flow/arm/devsummit22/sessions-catalog/page/sessions/session/16600464346670018mPQ
2727
type: website
28+
- resource:
29+
title: Learn more about the Corstone reference systems
30+
link: https://www.arm.com/products/silicon-ip-subsystems/
31+
type: website
2832

2933
# ================================================================================
3034
# FIXED, DO NOT MODIFY

content/learning-paths/microcontrollers/mlek/build.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,31 @@ layout: "learningpathall"
99
---
1010
The [Arm ML Evaluation Kit (MLEK)](https://review.mlplatform.org/plugins/gitiles/ml/ethos-u/ml-embedded-evaluation-kit) provides a number of ready-to-use ML applications. These allow you to investigate the embedded software stack and evaluate performance on the Cortex-M55 and Ethos-U55 processors.
1111

12-
You can use the MLEK source code to build sample applications and run them on the [Corstone-300](https://developer.arm.com/Processors/Corstone-300) Fixed Virtual Platform (FVP).
12+
You can use the MLEK source code to build sample applications and run them on the [Corstone reference systems](https://www.arm.com/products/silicon-ip-subsystems/), for example the [Corstone-300](https://developer.arm.com/Processors/Corstone-300) Fixed Virtual Platform (FVP).
1313

14-
## Before you begin
14+
## Before you begin
1515

1616
You can use your own Ubuntu Linux host machine or use [Arm Virtual Hardware (AVH)](https://www.arm.com/products/development-tools/simulation/virtual-hardware) for this Learning Path.
1717

18-
The Ubuntu version should be 20.04 or 22.04. The `x86_64` architecture must be used because the Corstone-300 FVP is not currently available for the Arm architecture. You will need a Linux desktop to run the FVP because it opens graphical windows for input and output from the software applications.
18+
The Ubuntu version should be 20.04 or 22.04. The `x86_64` architecture must be used because the Corstone-300 FVP is not currently available for the Arm architecture. You will need a Linux desktop to run the FVP because it opens graphical windows for input and output from the software applications.
1919

2020
If you want to use Arm Virtual Hardware the [Arm Virtual Hardware install guide](/install-guides/avh#corstone) provides setup instructions.
2121

22-
### Compilers
22+
### Compilers
2323

24-
The examples can be built with [Arm Compiler for Embedded](https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Embedded) or [Arm GNU Toolchain](https://developer.arm.com/Tools%20and%20Software/GNU%20Toolchain).
24+
The examples can be built with [Arm Compiler for Embedded](https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Embedded) or [Arm GNU Toolchain](https://developer.arm.com/Tools%20and%20Software/GNU%20Toolchain).
2525

2626
Use the install guides to install the compilers on your computer:
2727
- [Arm Compiler for Embedded](/install-guides/armclang/)
2828
- [Arm GNU Toolchain](/install-guides/gcc/arm-gnu)
2929

30-
Both compilers are pre-installed in Arm Virtual Hardware.
30+
Both compilers are pre-installed in Arm Virtual Hardware.
3131

3232
### Corstone-300 FVP {#fvp}
3333

34-
To install the Corstone-300 FVP on your computer refer to the [install guide for Arm Ecosystem FVPs](/install-guides/fm_fvp).
34+
To install the Corstone-300 FVP on your computer refer to the [install guide for Arm Ecosystem FVPs](/install-guides/fm_fvp).
3535

36-
The Corstone-300 FVP is pre-installed in Arm Virtual Hardware.
36+
The Corstone-300 FVP is pre-installed in Arm Virtual Hardware.
3737

3838
## Clone the repository
3939

@@ -54,9 +54,9 @@ git submodule update --init
5454

5555
## Build the example applications
5656

57-
The default compiler is `gcc`, but `armclang` can also be used.
57+
The default compiler is `gcc`, but `armclang` can also be used.
5858

59-
You can select either compiler to build applications. You can also try them both and compare the results.
59+
You can select either compiler to build applications. You can also try them both and compare the results.
6060

6161
- Build with Arm GNU Toolchain (`gcc`)
6262

@@ -70,6 +70,6 @@ You can select either compiler to build applications. You can also try them both
7070
./build_default.py --toolchain arm
7171
```
7272

73-
The build will take a few minutes.
73+
The build will take a few minutes.
7474

7575
When the build is complete, you will find the example images (`.axf` files) in the `cmake-build-*/bin` directory. The `cmake-build` directory names are specific to the compiler used and Ethos-U55 configuration.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
---
22
title: Overview
33

4-
weight: 2
4+
weight: 2
55

66
# Do not modify these elements
77
layout: "learningpathall"
88
---
99

1010
As a microcontroller software developer, you likely start projects by identifying tools and software, setting up a development environment, and gathering evaluation boards and models.
1111

12-
Machine Learning (ML) applications follow the same pattern, but introduce additional complexity around the inclusion of machine learning models, software libraries for ML operations, and driver software to program neural processing unit (NPU) hardware.
12+
Machine Learning (ML) applications follow the same pattern, but introduce additional complexity around the inclusion of machine learning models, software libraries for ML operations, and driver software to program neural processing unit (NPU) hardware.
1313

14-
The [Corstone-300](https://developer.arm.com/Processors/Corstone-300) and [Corstone-310](https://developer.arm.com/Processors/Corstone-310) reference designs are the basis of many ML IoT solutions. These designs offer a jump start on building hardware for ML applications. There are many software tools and examples available to get started creating ML applications, but you may find it difficult to see the big picture and understand which tools and software are best for you.
14+
The [Corstone reference systems](https://www.arm.com/products/silicon-ip-subsystems) are the basis of many ML IoT solutions. These designs offer a jump start on building hardware for ML applications. There are many software tools and examples available to get started creating ML applications, but you may find it difficult to see the big picture and understand which tools and software are best for you. You can review the differences between the Corstone reference systems on the [Arm Developer Homepage for Corstone](https://developer.arm.com/documentation/102801/latest/).
1515

1616
This Learning Path is to help you get started with Cortex-M and Ethos-U machine learning application development.

0 commit comments

Comments
 (0)