Skip to content

Commit 39951d0

Browse files
authored
Merge pull request #1350 from ArmDeveloperEcosystem/main
Production update
2 parents da2fd0f + fedfb1f commit 39951d0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+2042
-475
lines changed

.github/workflows/content-checks.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,11 @@ jobs:
8181
- name: Run Microsoft Security DevOps
8282
uses: microsoft/security-devops-action@latest
8383
id: msdo
84+
with:
85+
tools: container-mapping, bandit, eslint, templateanalyzer
8486

8587
- name: Upload results to Security tab
8688
uses: actions/upload-artifact@v4
8789
with:
8890
path: ${{ steps.msdo.outputs.sarifFile }}
89-
retention-days: 5 # Default is 90 days
91+
retention-days: 5 # Default is 90 days

.wordlist.txt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3245,4 +3245,25 @@ sysbox
32453245
tinyml
32463246
tvOS
32473247
watchOS
3248-
zilliz
3248+
zilliz
3249+
ASGI
3250+
ComputeLibrary
3251+
FastAPI
3252+
GTSRB
3253+
KubeArchInspect
3254+
MLOPs
3255+
MiniLM
3256+
OpenBLAS
3257+
Requantize
3258+
UpsideDownCake
3259+
Uvicorn
3260+
WPA
3261+
WindowsPerfGUI
3262+
ZGC
3263+
Zouaoui
3264+
gui
3265+
kubearchinspect
3266+
mlops
3267+
multithreading
3268+
preloaded
3269+
requantize

assets/contributors.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,4 @@ Annie Tallund,Arm,annietllnd,annietallund,,
4141
Cyril Rohr,RunsOn,crohr,cyrilrohr,,
4242
Rin Dobrescu,Arm,,,,
4343
Przemyslaw Wirkus,Arm,PrzemekWirkus,przemyslaw-wirkus-78b73352,,
44+
Nader Zouaoui,Day Devs,nader-zouaoui,nader-zouaoui,@zouaoui_nader,https://daydevs.com/
331 KB
Loading
85.9 KB
Loading
228 KB
Loading

content/install-guides/acfl.md

Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ title: Arm Compiler for Linux
2323
tool_install: true
2424
weight: 1
2525
---
26-
[Arm Compiler for Linux (ACfL)](https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Linux) is a suite of tools containing Arm C/C++ Compiler (`armclang`), Arm Fortran Compiler (`armflang`), and Arm Performance Libraries (`ArmPL`). It is tailored to the development of High Performance Computing (HPC) applications.
26+
[Arm Compiler for Linux (ACfL)](https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Linux) is a suite of tools containing Arm C/C++ Compiler (`armclang`), Arm Fortran Compiler (`armflang`), and Arm Performance Libraries (ArmPL). It is tailored to the development of High Performance Computing (HPC) applications.
2727

28-
`Arm Compiler for Linux` runs on 64-bit Arm machines, it is not a cross-compiler.
28+
Arm Compiler for Linux runs on 64-bit Arm machines, it is not a cross-compiler.
2929

30-
You do not require any additional license to use `Arm Compiler for Linux`.
30+
You do not require any additional license to use Arm Compiler for Linux.
3131

3232
## Arm-based hardware
3333

@@ -60,7 +60,7 @@ These packages can be installed with the appropriate package manager for your OS
6060
- Amazon Linux: environment-modules glibc-devel gzip procps python3 tar
6161
- Ubuntu: environment-modules libc6-dev python3
6262

63-
Note: The minimum supported version for Python is version 3.6.
63+
The minimum supported version for Python is version 3.6.
6464

6565
You must have at least 2 GB of free hard disk space to both download and unpack
6666
the Arm Compiler for Linux package. You must also have an additional 6 GB of
@@ -77,7 +77,7 @@ You are now ready to install ACfL [manually](#manual) or with [Spack](#spack).
7777

7878
## Download and install using install script
7979

80-
Use an Arm recommended script to select, download, and install your preferred `ACfL` package.
80+
Use an Arm recommended script to select, download, and install your preferred ACfL package.
8181

8282
```console
8383
bash <(curl -L https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Package/install.sh)
@@ -95,46 +95,56 @@ sudo apt install wget
9595

9696
### Fetch the appropriate installer
9797

98-
`ACfL` installation packages are available to download from [Arm Developer](https://developer.arm.com/downloads/-/arm-compiler-for-linux). Individual `Arm Performance Libraries (ArmPL)` packages are also available.
98+
ACfL installation packages are available to download from [Arm Developer](https://developer.arm.com/downloads/-/arm-compiler-for-linux). Individual Arm Performance Libraries (ArmPL) packages are also available.
99+
100+
Fetch the ACfL installers:
99101

100-
Fetch the `ACfL` installers:
101102
#### Ubuntu Linux:
102103

103104
```bash { target="ubuntu:latest" }
104-
wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.04/arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar
105+
wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_Ubuntu-22.04_aarch64.tar
105106
```
106107
#### Red Hat Linux:
107108
```bash { target="fedora:latest" }
108-
wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.04/arm-compiler-for-linux_24.04_RHEL-8_aarch64.tar
109+
wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_RHEL-9_aarch64.tar
109110
```
110111

111112
### Install
112113

113-
To install the `Arm Compiler for Linux` package on your 64-bit Linux Arm machine extract the package and run the installation script.
114+
To install Arm Compiler for Linux on your 64-bit Linux Arm machine extract the package and run the installation script.
114115

115-
Each command sequence includes accepting the license agreement to automate the installation and installing the `modules` software.
116+
Each command sequence includes accepting the license agreement to automate the installation and installing Environment Modules.
116117

117118
#### Ubuntu Linux:
118119

119120
```bash { target="ubuntu:latest", env="DEBIAN_FRONTEND=noninteractive" }
120121
sudo -E apt-get -y install environment-modules python3 libc6-dev
121-
tar -xvf arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar
122-
cd ./arm-compiler-for-linux_24.04_Ubuntu-22.04
123-
sudo ./arm-compiler-for-linux_24.04_Ubuntu-22.04.sh --accept
122+
tar -xvf arm-compiler-for-linux_24.10_Ubuntu-22.04_aarch64.tar
123+
cd ./arm-compiler-for-linux_24.10_Ubuntu-22.04
124+
sudo ./arm-compiler-for-linux_24.10_Ubuntu-22.04.sh --accept
124125
```
125126

126127
#### Red Hat Linux:
127128

128129
```bash { target="fedora:latest" }
129130
sudo yum -y install environment-modules python3 glibc-devel
130-
tar -xvf arm-compiler-for-linux_24.04_RHEL-8_aarch64.tar
131-
cd arm-compiler-for-linux_24.04_RHEL-8
132-
sudo ./arm-compiler-for-linux_24.04_RHEL-8.sh --accept
131+
tar -xvf arm-compiler-for-linux_24.10_RHEL-9_aarch64.tar
132+
cd arm-compiler-for-linux_24.10_RHEL-9
133+
sudo ./arm-compiler-for-linux_24.10_RHEL-9.sh --accept
133134
```
134135

136+
{{% notice Warning %}}
137+
⚠️ On RPM based systems (such as Red Hat), if an
138+
alternative version of GCC (not the GCC bundled with ACfL) is installed
139+
**after** ACfL, you will not be able to uninstall ACfL fully. For example, a GDB
140+
(GNU Project Debugger) installation will install the native system GCC. If this
141+
install takes place **after** ACfL, you will no longer be able to fully
142+
uninstall ACfL.
143+
{{% /notice %}}
144+
135145
### Set up environment
136146

137-
`Arm Compiler for Linux` uses environment modules to dynamically modify your user environment. Refer to the [Environment Modules documentation](https://lmod.readthedocs.io/en/latest/#id) for more information.
147+
Arm Compiler for Linux uses environment modules to dynamically modify your user environment. Refer to the [Environment Modules documentation](https://lmod.readthedocs.io/en/latest/#id) for more information.
138148

139149
Set up the environment, for example, in your `.bashrc` and add module files.
140150

@@ -163,25 +173,26 @@ module avail
163173
To configure Arm Compiler for Linux:
164174

165175
```bash { env_source="~/.bashrc" }
166-
module load acfl/24.04
176+
module load acfl/24.10
167177
```
168178

169179
To configure GCC:
170180

171181
```bash { env_source="~/.bashrc" }
172-
module load gnu/13.2.0
182+
module load gnu/14.2.0
173183
```
174-
`ACfL` is now [ready to use](#armclang).
184+
185+
ACfL is now [ready to use](#armclang).
175186

176187
## Download and install with Spack {#spack}
177188

178-
`Arm Compiler for Linux` is available with the [Spack](https://spack.io/) package manager.
189+
Arm Compiler for Linux is available with the [Spack](https://spack.io/) package manager.
179190

180191
See the [Arm Compiler for Linux and Arm PL now available in Spack](https://community.arm.com/arm-community-blogs/b/high-performance-computing-blog/posts/arm-compiler-for-linux-and-arm-pl-now-available-in-spack) blog for full details.
181192

182193
### Setup Spack
183194

184-
Clone the `Spack` repostitory and add `bin` directory to the path:
195+
Clone the Spack repository and add `bin` directory to the path:
185196

186197
```console
187198
git clone -c feature.manyFiles=true https://github.com/spack/spack.git
@@ -194,17 +205,17 @@ Set up shell support:
194205
. /home/ubuntu/spack/share/spack/setup-env.sh
195206
```
196207

197-
`Spack` is now ready to use.
208+
Spack is now ready to use.
198209

199210
### Install ACfL
200211

201-
Download and install `Arm Compiler for Linux` with:
212+
Download and install Arm Compiler for Linux with:
202213

203214
```console
204215
spack install acfl
205216
```
206217

207-
If you wish to install just the `Arm Performance Libraries`, use:
218+
If you wish to install just the Arm Performance Libraries, use:
208219

209220
```console
210221
spack install armpl-gcc
@@ -218,15 +229,15 @@ spack load acfl
218229
spack compiler find
219230
```
220231

221-
`ACfL` is now [ready to use](#armclang).
232+
ACfL is now [ready to use](#armclang).
222233

223234

224235
## Get started with Arm C/C++ compiler {#armclang}
225236

226237
To get started with the Arm C/C++ Compiler and compile a simple application follow the steps below.
227238

228239
Check that the correct compiler version is being used:
229-
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.04" }
240+
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.10" }
230241
armclang --version
231242
```
232243

@@ -244,13 +255,13 @@ int main()
244255

245256
Build the application with:
246257

247-
```console { env_source="~/.bashrc", pre_cmd="module load acfl/24.04" }
258+
```console { env_source="~/.bashrc", pre_cmd="module load acfl/24.10" }
248259
armclang hello.c -o hello
249260
```
250261

251262
Run the application with:
252263

253-
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.04" }
264+
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.10" }
254265
./hello
255266
```
256267

@@ -264,7 +275,7 @@ Hello, C World!
264275
To get started with the Arm Fortran Compiler and compile a simple application follow the steps below.
265276

266277
Check that the correct compiler version is being used:
267-
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.04" }
278+
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.10" }
268279
armflang --version
269280
```
270281

@@ -278,12 +289,12 @@ end program hello
278289
```
279290

280291
Build the application with:
281-
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.04" }
292+
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.10" }
282293
armflang hello.f90 -o hello
283294
```
284295

285296
Run the application with:
286-
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.04" }
297+
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/24.10" }
287298
./hello
288299
```
289300

content/install-guides/armpl.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -70,28 +70,28 @@ For more information refer to [Get started with Arm Performance Libraries](https
7070

7171
In a terminal, run the command shown below to download the macOS package:
7272
```console
73-
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/24-04/macos/arm-performance-libraries_24.04_macOS.tgz
73+
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/24-10/macos/arm-performance-libraries_24.10_macOS.tgz
7474
```
7575

7676
Use tar to extract the file:
7777
```console
78-
tar zxvf arm-performance-libraries_24.04_macOS.tgz
78+
tar zxvf arm-performance-libraries_24.10_macOS.tgz
7979
```
8080

8181
Output of above command:
8282
```console
83-
armpl_24.04_flang-new_clang_18.dmg
83+
armpl_24.10_flang-new_clang_19.dmg
8484
```
8585

8686
Mount the disk image by running from a terminal:
8787
```console
88-
hdiutil attach armpl_24.04_flang-new_clang_18.dmg
88+
hdiutil attach armpl_24.10_flang-new_clang_19.dmg
8989
```
9090

9191
Now run the installation script as a superuser:
9292

9393
```console
94-
/Volumes/armpl_24.04_flang-new_clang_18_installer/armpl_24.04_flang-new_clang_18_install.sh -y
94+
/Volumes/armpl_24.10_flang-new_clang_19_installer/armpl_24.10_flang-new_clang_19_install.sh -y
9595
```
9696

9797
Using this command you automatically accept the End User License Agreement and the packages are installed to the `/opt/arm` directory. If you want to change the installation directory location use the `--install_dir` option with the script and provide the desired directory location.
@@ -103,33 +103,33 @@ For more information refer to [Get started with Arm Performance Libraries](https
103103

104104
## Linux {#linux}
105105

106-
Arm Performance Libraries are supported on most Linux Distributions like Ubuntu, RHEL, SLES and Amazon Linux on an `AArch64` host and compatible with various versions of GCC and NVHPC. The GCC compatible releases are built with GCC 13 and tested with GCC versions 7 to 13. The NVHPC compatible releases are built and tested with NVHPC 24.1.
106+
Arm Performance Libraries are supported on most Linux Distributions like Ubuntu, RHEL, SLES and Amazon Linux on an `AArch64` host and compatible with various versions of GCC and NVHPC. The GCC compatible releases are built with GCC 14 and tested with GCC versions 7 to 14. The NVHPC compatible releases are built and tested with NVHPC 24.7.
107107

108108
[Download](https://developer.arm.com/downloads/-/arm-performance-libraries) the appropriate package for your Linux distribution. The deb based installers can be used on Ubuntu 20 and Ubuntu 22. The RPM based installers can be used on the following supported distributions:
109109

110110
- Amazon Linux 2, Amazon Linux 2023
111-
- RHEL-7, RHEL-8, RHEL-9
112-
- SLES-15
111+
- RHEL-8, RHEL-9
112+
- SLES-15 Service Packs 5 and 6
113113

114114
The instructions shown below are for deb based installers for GCC users.
115115

116116
In a terminal, run the command shown below to download the debian package:
117117

118118
```console
119-
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/24-04/linux/arm-performance-libraries_24.04_deb_gcc.tar
119+
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/24-10/linux/arm-performance-libraries_24.10_deb_gcc.tar
120120
```
121121

122122
Use `tar` to extract the file and then change directory:
123123

124124
```console
125-
tar -xf arm-performance-libraries_24.04_deb_gcc.tar
126-
cd arm-performance-libraries_24.04_deb/
125+
tar -xf arm-performance-libraries_24.10_deb_gcc.tar
126+
cd arm-performance-libraries_24.10_deb/
127127
```
128128

129129
Run the installation script as a super user:
130130

131131
```console
132-
sudo ./arm-performance-libraries_24.04_deb.sh --accept
132+
sudo ./arm-performance-libraries_24.10_deb.sh --accept
133133
```
134134

135135
Using the `--accept` switch you automatically accept the End User License Agreement and the packages are installed to the `/opt/arm` directory.
@@ -165,13 +165,13 @@ module avail
165165
The output should be similar to:
166166

167167
```output
168-
armpl/24.04.0_gcc
168+
armpl/24.10.0_gcc
169169
```
170170

171171
Load the appropriate module:
172172

173173
```console
174-
module load armpl/24.04.0_gcc
174+
module load armpl/24.10.0_gcc
175175
```
176176

177177
You can now compile and test the examples included in the `/opt/arm/<armpl_dir>/examples/`, or `<install_dir>/<armpl_dir>/examples/` directory, if you have installed to a different location than the default.

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.

0 commit comments

Comments
 (0)