You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/install-guides/acfl.md
+44-33Lines changed: 44 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,11 +23,11 @@ title: Arm Compiler for Linux
23
23
tool_install: true
24
24
weight: 1
25
25
---
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.
27
27
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.
29
29
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.
31
31
32
32
## Arm-based hardware
33
33
@@ -60,7 +60,7 @@ These packages can be installed with the appropriate package manager for your OS
60
60
- Amazon Linux: environment-modules glibc-devel gzip procps python3 tar
61
61
- Ubuntu: environment-modules libc6-dev python3
62
62
63
-
Note: The minimum supported version for Python is version 3.6.
63
+
The minimum supported version for Python is version 3.6.
64
64
65
65
You must have at least 2 GB of free hard disk space to both download and unpack
66
66
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).
77
77
78
78
## Download and install using install script
79
79
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.
`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.
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
+
135
145
### Set up environment
136
146
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.
138
148
139
149
Set up the environment, for example, in your `.bashrc` and add module files.
140
150
@@ -163,25 +173,26 @@ module avail
163
173
To configure Arm Compiler for Linux:
164
174
165
175
```bash { env_source="~/.bashrc" }
166
-
module load acfl/24.04
176
+
module load acfl/24.10
167
177
```
168
178
169
179
To configure GCC:
170
180
171
181
```bash { env_source="~/.bashrc" }
172
-
module load gnu/13.2.0
182
+
module load gnu/14.2.0
173
183
```
174
-
`ACfL` is now [ready to use](#armclang).
184
+
185
+
ACfL is now [ready to use](#armclang).
175
186
176
187
## Download and install with Spack {#spack}
177
188
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.
179
190
180
191
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.
181
192
182
193
### Setup Spack
183
194
184
-
Clone the `Spack` repostitory and add `bin` directory to the path:
195
+
Clone the Spack repository and add `bin` directory to the path:
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
103
103
104
104
## Linux {#linux}
105
105
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.
107
107
108
108
[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:
109
109
110
110
- 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
113
113
114
114
The instructions shown below are for deb based installers for GCC users.
115
115
116
116
In a terminal, run the command shown below to download the debian package:
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
165
165
The output should be similar to:
166
166
167
167
```output
168
-
armpl/24.04.0_gcc
168
+
armpl/24.10.0_gcc
169
169
```
170
170
171
171
Load the appropriate module:
172
172
173
173
```console
174
-
module load armpl/24.04.0_gcc
174
+
module load armpl/24.10.0_gcc
175
175
```
176
176
177
177
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.
Copy file name to clipboardExpand all lines: content/install-guides/java.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -234,6 +234,20 @@ To print the final values of the flags after the JVM has been initialized, run:
234
234
java -XX:+PrintFlagsFinal -version
235
235
```
236
236
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
+
237
251
## Are there other tools commonly used in Java projects?
238
252
239
253
There are a number of Java-related tools you might like to install.
0 commit comments