Skip to content

Commit 4e6a364

Browse files
authored
Merge branch 'ArmDeveloperEcosystem:main' into main
2 parents 4bcbf61 + 90ef887 commit 4e6a364

File tree

11 files changed

+365
-304
lines changed

11 files changed

+365
-304
lines changed

content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/1-prerequisites.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ This Learning Path demonstrates how to improve the performance of camera pipelin
1313
## Install required software
1414

1515
Make sure the following tools are installed:
16-
- `git` - a version control system, for cloning the Voice Assistant codebase.
16+
- `git` - a version control system, for cloning the AI camera pipelines codebase.
1717
- `git lfs` - an extension to `git` for managing large files by storing lightweight references instead of the files themselves.
1818
- `docker` - an open-source containerization platform for running applications in isolated environments.
1919
- `libomp` - LLVM's OpenMP runtime library, required for enabling parallel execution during application performance optimization.
@@ -52,7 +52,7 @@ Once you have confirmed that Docker is installed on your machine, you can check
5252
docker run hello-world
5353
Unable to find image 'hello-world:latest' locally
5454
latest: Pulling from library/hello-world
55-
c9c5fd25a1bd: Pull complete
55+
c9c5fd25a1bd: Pull complete
5656
Digest: sha256:c41088499908a59aae84b0a49c70e86f4731e588a737f1637e73c8c09d995654
5757
Status: Downloaded newer image for hello-world:latest
5858

content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/3-build.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,26 @@ Leave the container by pressing `Ctrl+D`.
7373

7474
## Notes on the cmake configuration options
7575

76-
- `-DENABLE_SME2=$ENABLE_SME2` with `ENABLE_SME2=0`: SME2 (Scalable Matrix Extension 2) is disabled in this build (`0`).
77-
- `-DARMNN_TFLITE_PARSER=0`: Configures the `ai-camera-pipelines` repository to use LiteRT with XNNPack instead of ArmNN.
78-
- `-DENABLE_KLEIDICV:BOOL=ON`: Enables KleidiCV for optimized image processing.
79-
- `-DXNNPACK_ENABLE_KLEIDIAI:BOOL=ON`: Enables KleidiAI acceleration for LiteRT workloads via XNNPack.
76+
The `cmake` command line options relevant to this learning path are:
77+
78+
| Command line option | Description |
79+
|-------------------------------------|----------------------------------------------------------------------------------------------|
80+
| `ENABLE_SME2=$ENABLE_SME2` | SME2 (Scalable Matrix Extension 2) is disabled in this build with `ENABLE_SME2=0`. |
81+
| `ARMNN_TFLITE_PARSER=0` | Configures the `ai-camera-pipelines` repository to use LiteRT with XNNPack instead of ArmNN. |
82+
| `ENABLE_KLEIDICV:BOOL=ON` | Enables KleidiCV for optimized image processing. |
83+
| `XNNPACK_ENABLE_KLEIDIAI:BOOL=ON` | Enables KleidiAI acceleration for LiteRT workloads via XNNPack. |
8084

8185
## Install the pipelines
8286

8387
```bash
8488
cd $HOME
8589
tar xfz ai-camera-pipelines.git/install.tar.gz
8690
mv install ai-camera-pipelines
87-
```
91+
```
92+
93+
## Diving further in the AI camera pipelines
94+
95+
The AI camera pipelines
96+
[repository](https://git.gitlab.arm.com/kleidi/kleidi-examples/ai-camera-pipelines)
97+
contains more information in its README file should you wish to dive deeper into
98+
it.

content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/4-run.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ cd $HOME/ai-camera-pipelines
3030
bin/low_light_image_enhancement resources/test_input2.ppm test_output2_lime.ppm resources/HDRNetLIME_lr_coeffs_v1_1_0_mixed_low_light_perceptual_l2_loss_int8_only_ptq.tflite
3131
```
3232

33+
![example image alt-text#center](test_input2.png "Original picture")
3334
![example image alt-text#center](test_output2_lime.png "Picture with low-light enhancement applied")

content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/1_setup.md

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Tomcat benchmark set up
2+
title: Set up Tomcat
33
weight: 2
44

55
### FIXED, DO NOT MODIFY
@@ -9,16 +9,16 @@ layout: learningpathall
99

1010
## Overview
1111

12-
There are numerouse client-server and network-based workloads, and Tomcat is a typical example of such applications, which provide services via HTTP/HTTPS network requests.
12+
There are numerous client-server and network-based workloads, with Tomcat being a typical example of such applications. Tomcat provides services via HTTP/HTTPS network requests.
1313

14-
In this section, you'll set up a benchmark environment using Apache Tomcat and `wrk2` to simulate HTTP load and evaluate performance on an Arm-based bare-metal (**__`Nvidia-Grace`__**).
14+
In this section, you will set up a benchmark environment using `Apache Tomcat` and `wrk2` to simulate an HTTP load and evaluate performance on an Arm-based bare metal instance. This Learning Path was tested on an AWS `c8g.metal-48xl` instance.
1515

16-
## Set up the Tomcat benchmark server on **Nvidia Grace**
16+
## Set up the Tomcat benchmark server
1717
[Apache Tomcat](https://tomcat.apache.org/) is an open-source Java Servlet container that runs Java web applications, handles HTTP requests, and serves dynamic content. It supports technologies such as Servlet, JSP, and WebSocket.
1818

1919
## Install the Java Development Kit (JDK)
2020

21-
Install OpenJDK 21 on your Arm-based Ubuntu 24 bare-metal:
21+
Install OpenJDK 21 on your Arm-based Ubuntu 24.04 bare-metal instance:
2222

2323
```bash
2424
sudo apt update
@@ -30,8 +30,8 @@ sudo apt install -y openjdk-21-jdk
3030
Download and extract Tomcat:
3131

3232
```bash
33-
wget -c https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.9/bin/apache-tomcat-11.0.9.tar.gz
34-
tar xzf apache-tomcat-11.0.9.tar.gz
33+
wget -c https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.10/bin/apache-tomcat-11.0.10.tar.gz
34+
tar xzf apache-tomcat-11.0.10.tar.gz
3535
```
3636
Alternatively, you can build Tomcat [from source](https://github.com/apache/tomcat).
3737

@@ -41,16 +41,19 @@ To access the built-in examples from your local network or external IP, use a te
4141

4242
The file is at:
4343
```bash
44-
apache-tomcat-11.0.9/webapps/examples/META-INF/context.xml
44+
~/apache-tomcat-11.0.10/webapps/examples/META-INF/context.xml
4545
```
4646

47+
Replace the existing allow value as shown:
4748
```xml
48-
<!-- Before -->
4949
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
50+
```
5051

51-
<!-- After -->
52+
With:
53+
```xml
5254
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow=".*" />
5355
```
56+
Save the changes to your file.
5457

5558
## Start the Tomcat server
5659
{{% notice Note %}}
@@ -60,17 +63,17 @@ To achieve maximum performance of Tomcat, the maximum number of file descriptors
6063
Start the server:
6164

6265
```bash
63-
ulimit -n 65535 && ./apache-tomcat-11.0.9/bin/startup.sh
66+
ulimit -n 65535 && ~/apache-tomcat-11.0.10/bin/startup.sh
6467
```
6568

6669
You should see output like:
6770

6871
```output
69-
Using CATALINA_BASE: /home/ubuntu/apache-tomcat-11.0.9
70-
Using CATALINA_HOME: /home/ubuntu/apache-tomcat-11.0.9
71-
Using CATALINA_TMPDIR: /home/ubuntu/apache-tomcat-11.0.9/temp
72+
Using CATALINA_BASE: /home/ubuntu/apache-tomcat-11.0.10
73+
Using CATALINA_HOME: /home/ubuntu/apache-tomcat-11.0.10
74+
Using CATALINA_TMPDIR: /home/ubuntu/apache-tomcat-11.0.10/temp
7275
Using JRE_HOME: /usr
73-
Using CLASSPATH: /home/ubuntu/apache-tomcat-11.0.9/bin/bootstrap.jar:/home/ubuntu/apache-tomcat-11.0.9/bin/tomcat-juli.jar
76+
Using CLASSPATH: /home/ubuntu/apache-tomcat-11.0.10/bin/bootstrap.jar:/home/ubuntu/apache-tomcat-11.0.10/bin/tomcat-juli.jar
7477
Using CATALINA_OPTS:
7578
Tomcat started.
7679
```
@@ -91,7 +94,7 @@ You should see the Tomcat welcome page and examples, as shown below:
9194
[Wrk2](https://github.com/giltene/wrk2) is a high-performance HTTP benchmarking tool specialized in generating constant throughput loads and measuring latency percentiles for web services. `wrk2` is an enhanced version of `wrk` that provides accurate latency statistics under controlled request rates, ideal for performance testing of HTTP servers.
9295

9396
{{% notice Note %}}
94-
Currently `wrk2` is only supported on x86 machines. Run the benchmark client steps below on an `x86_64` server running Ubuntu 24.
97+
Currently `wrk2` is only supported on x86 machines. Run the benchmark client steps below on a bare metal `x86_64` server running Ubuntu 24.04
9598
{{% /notice %}}
9699

97100
## Install dependencies
@@ -132,28 +135,28 @@ ulimit -n 65535 && wrk -c32 -t16 -R50000 -d60 http://${tomcat_ip}:8080/examples/
132135
You should see output similar to:
133136

134137
```console
135-
Running 1m test @ http://172.26.203.139:8080/examples/servlets/servlet/HelloWorldExample
138+
Running 1m test @ http://172.31.46.193:8080/examples/servlets/servlet/HelloWorldExample
136139
16 threads and 32 connections
137-
Thread calibration: mean lat.: 0.986ms, rate sampling interval: 10ms
138-
Thread calibration: mean lat.: 0.984ms, rate sampling interval: 10ms
139-
Thread calibration: mean lat.: 0.999ms, rate sampling interval: 10ms
140-
Thread calibration: mean lat.: 0.994ms, rate sampling interval: 10ms
141-
Thread calibration: mean lat.: 0.983ms, rate sampling interval: 10ms
142-
Thread calibration: mean lat.: 0.989ms, rate sampling interval: 10ms
143-
Thread calibration: mean lat.: 0.991ms, rate sampling interval: 10ms
144-
Thread calibration: mean lat.: 0.993ms, rate sampling interval: 10ms
145-
Thread calibration: mean lat.: 0.985ms, rate sampling interval: 10ms
146-
Thread calibration: mean lat.: 0.990ms, rate sampling interval: 10ms
147-
Thread calibration: mean lat.: 0.987ms, rate sampling interval: 10ms
148-
Thread calibration: mean lat.: 0.990ms, rate sampling interval: 10ms
149-
Thread calibration: mean lat.: 0.984ms, rate sampling interval: 10ms
150-
Thread calibration: mean lat.: 0.991ms, rate sampling interval: 10ms
151-
Thread calibration: mean lat.: 0.978ms, rate sampling interval: 10ms
152-
Thread calibration: mean lat.: 0.976ms, rate sampling interval: 10ms
140+
Thread calibration: mean lat.: 3.381ms, rate sampling interval: 10ms
141+
Thread calibration: mean lat.: 3.626ms, rate sampling interval: 10ms
142+
Thread calibration: mean lat.: 3.020ms, rate sampling interval: 10ms
143+
Thread calibration: mean lat.: 3.578ms, rate sampling interval: 10ms
144+
Thread calibration: mean lat.: 3.166ms, rate sampling interval: 10ms
145+
Thread calibration: mean lat.: 3.275ms, rate sampling interval: 10ms
146+
Thread calibration: mean lat.: 3.454ms, rate sampling interval: 10ms
147+
Thread calibration: mean lat.: 3.655ms, rate sampling interval: 10ms
148+
Thread calibration: mean lat.: 3.334ms, rate sampling interval: 10ms
149+
Thread calibration: mean lat.: 3.089ms, rate sampling interval: 10ms
150+
Thread calibration: mean lat.: 3.365ms, rate sampling interval: 10ms
151+
Thread calibration: mean lat.: 3.382ms, rate sampling interval: 10ms
152+
Thread calibration: mean lat.: 3.342ms, rate sampling interval: 10ms
153+
Thread calibration: mean lat.: 3.349ms, rate sampling interval: 10ms
154+
Thread calibration: mean lat.: 3.023ms, rate sampling interval: 10ms
155+
Thread calibration: mean lat.: 3.275ms, rate sampling interval: 10ms
153156
Thread Stats Avg Stdev Max +/- Stdev
154-
Latency 1.00ms 454.90us 5.09ms 63.98%
155-
Req/Sec 3.31k 241.68 4.89k 63.83%
156-
2999817 requests in 1.00m, 1.56GB read
157-
Requests/sec: 49997.08
157+
Latency 1.02ms 398.88us 4.24ms 66.77%
158+
Req/Sec 3.30k 210.16 4.44k 70.04%
159+
2999776 requests in 1.00m, 1.56GB read
160+
Requests/sec: 49996.87
158161
Transfer/sec: 26.57MB
159162
```

0 commit comments

Comments
 (0)