Skip to content

Commit

Permalink
Merge pull request #529 from ArmDeveloperEcosystem/main
Browse files Browse the repository at this point in the history
Merge to production
  • Loading branch information
pareenaverma authored Oct 16, 2023
2 parents 46a7a0d + 38bbff0 commit 1664e91
Show file tree
Hide file tree
Showing 22 changed files with 1,059 additions and 44 deletions.
18 changes: 17 additions & 1 deletion .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1598,4 +1598,20 @@ pmuserenr
MPU
Uma
Ramalingam

topdown
eksctl
sLO
Wl
lpapi
rpath
alibaba
pmu
PJDOC
SDP
Lookaside
TLB
DynamoRIO
drcachesim
dynamorio
mispredicted
lookaside
52 changes: 29 additions & 23 deletions content/install-guides/acfl.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ layout: installtoolsall
minutes_to_complete: 15
multi_install: false
multitool_install_part: false
official_docs: https://developer.arm.com/documentation/102621
official_docs: https://developer.arm.com/documentation/101458/latest
test_images:
- ubuntu:latest
- fedora:latest
Expand Down Expand Up @@ -52,14 +52,20 @@ If you see a different result, you are not using an Arm computer running 64-bit

## Install pre-requisites

If any of the following are not already installed by your Linux distribution, you must install them before installing Arm Compiler for Linux:
If any of the following tools are not already installed by your Linux
distribution, you must install them before installing Arm Compiler for Linux.
These packages can be installed with the appropriate package manager for your OS:

* Python (version 2.7 or later)
* C Libraries:
- SUSE and RHEL
- `glibc-devel`
- Ubuntu
- `libc6-dev`
- SLES: awk environment-modules glibc-devel gzip python3 tar
- RHEL: environment-modules glibc-devel procps python3
- Amazon Linux: environment-modules glibc-devel gzip procps python3 tar
- Ubuntu: environment-modules libc6-dev python3

Note: The minimum supported version for Python is version 3.6.

You must have at least 2 GB of free hard disk space to both download and unpack
the Arm Compiler for Linux package. You must also have an additional 6 GB of
free space to install the package.

For example:
```command
Expand All @@ -85,42 +91,42 @@ Fetch the `ACfL` installers:
#### Ubuntu Linux:

```bash { target="ubuntu:latest" }
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/23-04-1/arm-compiler-for-linux_23.04.1_Ubuntu-22.04_aarch64.tar
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/23-04-1/arm-compiler-for-linux_23.10_Ubuntu-22.04_aarch64.tar
```
#### Red Hat Linux:
```bash { target="fedora:latest" }
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/23-04-1/arm-compiler-for-linux_23.04.1_RHEL-8_aarch64.tar
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/23-04-1/arm-compiler-for-linux_23.10_RHEL-8_aarch64.tar
```

### Install

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

Each command sequence includes accepting the license agreement to automate the installation and installing the `modules` software.

#### Ubuntu Linux:

```bash { target="ubuntu:latest", env="DEBIAN_FRONTEND=noninteractive" }
sudo -E apt-get -y install environment-modules python3 libc6-dev
tar -xvf arm-compiler-for-linux_23.04.1_Ubuntu-22.04_aarch64.tar
cd ./arm-compiler-for-linux_23.04.1_Ubuntu-22.04
sudo ./arm-compiler-for-linux_23.04.1_Ubuntu-22.04.sh --accept
tar -xvf arm-compiler-for-linux_23.10_Ubuntu-22.04_aarch64.tar
cd ./arm-compiler-for-linux_23.10_Ubuntu-22.04
sudo ./arm-compiler-for-linux_23.10_Ubuntu-22.04.sh --accept
```

#### Red Hat Linux:

```bash { target="fedora:latest" }
sudo yum -y install environment-modules python3 glibc-devel
tar -xvf arm-compiler-for-linux_23.04.1_RHEL-8_aarch64.tar
cd arm-compiler-for-linux_23.04.1_RHEL-8
sudo ./arm-compiler-for-linux_23.04.1_RHEL-8.sh --accept
tar -xvf arm-compiler-for-linux_23.10_RHEL-8_aarch64.tar
cd arm-compiler-for-linux_23.10_RHEL-8
sudo ./arm-compiler-for-linux_23.10_RHEL-8.sh --accept
```

### Set up environment

`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.

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

#### Ubuntu Linux:

Expand All @@ -147,13 +153,13 @@ module avail
To configure Arm Compiler for Linux:

```bash { env_source="~/.bashrc" }
module load acfl/23.04.1
module load acfl/23.10
```

To configure GCC:

```bash { env_source="~/.bashrc" }
module load gnu/12.2.0
module load gnu/12.3.0
```
`ACfL` is now [ready to use](#armclang).

Expand Down Expand Up @@ -197,7 +203,7 @@ spack compiler find

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

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

Check that the correct compiler version is being used:
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/22.1" }
Expand Down Expand Up @@ -235,7 +241,7 @@ Hello, C World!

## Get started with Arm Fortran compiler {#fortran}

To get started with the Arm Fortran Compiler and compile a simple application follow the steps below.
To get started with the Arm Fortran Compiler and compile a simple application follow the steps below.

Check that the correct compiler version is being used:
```bash { env_source="~/.bashrc", pre_cmd="module load acfl/22.1" }
Expand Down Expand Up @@ -268,4 +274,4 @@ Hello, Fortran World!

## Get started with Arm Performance Libraries {#armpl}

To get started with the [Arm Performance Libraries](https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Libraries) and learn how to select the optimal library for your system, follow the [Get started with Arm Performance Libraries](https://developer.arm.com/documentation/102574) guide.
To get started with the [Arm Performance Libraries](https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Libraries) and learn how to select the optimal library for your system, follow the [Get started with Arm Performance Libraries](https://developer.arm.com/documentation/101004/latest) guide.
26 changes: 25 additions & 1 deletion content/install-guides/perf.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,19 @@ sudo cp tools/perf/perf /usr/local/bin

## Test Perf {#test}

Regardless of how you installed Perf, try the `perf list` command:
Regardless of how you installed Perf, run the `version` command:

```console
perf version
```

The output will be similar to:

```output
perf version 5.15.116
```

You can also try the `list` command to confirm `perf` is working as expected:

```console
perf list
Expand Down Expand Up @@ -260,6 +272,18 @@ To permanently set the paranoid level, add the following line to the file `/etc/
kernel.perf_event_paranoid=2
```

### Additional Perf commands

There are five common commands used in performance analysis.

* **stat** provides performance counter statistics for the overall execution of a program

* **record** samples the program and records the samples into a data file (perf.data by default)

* **report** generates a report of where the samples occurred

* **annotate** displays the annotated code showing the source and assembly code for the samples

### Arm PMU driver

Arm systems use a kernel driver to expose PMU hardware counters. The driver needs to be enabled in the Linux kernel in order to collect the hardware events.
Expand Down
5 changes: 2 additions & 3 deletions content/install-guides/topdown-tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ The Arm Telemetry Solution provides tools and data for performance analysis.

The Arm Topdown Methodology specifies a set of metrics and steps to measure them using the Telemetry Solution.

Refer to the [Arm Neoverse V1 Performance Analysis Methodology whitepaper](https://armkeil.blob.core.windows.net/developer/Files/pdf/white-paper/neoverse-v1-core-performance-analysis.pdf) for an introduction to the Arm Topdown methodology.

The Telemetry Solution requires Linux Perf to collect metrics.

The Telemetry Solution also includes data for defining PMU events, a test suite to stress CPU resources, and a tool to parse Statistical Profiling Extension (SPE) data for analysis.
Expand Down Expand Up @@ -156,10 +154,11 @@ output options:
4. Test `topdown-tool`

{{% notice Note %}}
You may need to enable user space access to the counters.
You may need to enable access to the counters. More information about the options is in the [Linux Perf install guide](/install-guides/perf/).

```console
sudo sh -c "echo -1 > /proc/sys/kernel/perf_event_paranoid"
sudo sh -c "echo 0 > /proc/sys/kernel/kptr_restrict"
```
{{% /notice %}}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ test_link: https://github.com/armflorentlebeau/arm-learning-paths/actions/runs/4
test_maintenance: true
test_status:
- passed
title: Learn about MongoDB on Arm servers
title: Test the performance of MongoDB on Arm servers
tools_software_languages:
- MongoDB
- AWS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# ================================================================================

next_step_guidance: >
You can continue learning about porting cloud applications to the Arm architecture for increased performance and cost savings. The Learning Path on HyperScan is a great next step.
You can continue learning about porting cloud applications to the Arm architecture for increased performance and cost savings. The Learning Path on Hyperscan is a great next step.
# 1-3 sentence recommendation outlining how the reader can generally keep learning about these topics, and a specific explanation of why the next step is being recommended.

recommended_path: "/learning-paths/servers-and-cloud-computing/vectorscan/"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# Always 3 questions. Should try to test the reader's knowledge, and reinforce the key points you want them to remember.
# question: A one sentence question
# answers: The correct answers (from 2-4 answer options only). Should be surrounded by quotes.
# correct_answer: An integer indicating what answer is correct (index starts from 0)
# correct_answer: An integer indicating what answer is correct (index starts from 1)
# explanation: A short (1-3 sentence) explanation of why the correct answer is correct. Can add additional context if desired


Expand All @@ -23,7 +23,7 @@ review:
- questions:
question: >
Can you test MongoDB performance by running multiple threads executing different operation types?
Can MongoDB performance be tested by running multiple threads executing different operation types?
answers:
- "Yes"
- "No"
Expand All @@ -41,7 +41,7 @@ review:
- "Java"
correct_answer: 4
explanation: >
You will need Java 1.8 or newer installed, which can be done with one bash command.
You will need to have Java 1.8 or newer installed, which can be done with a single bash command.
Expand Down
Loading

0 comments on commit 1664e91

Please sign in to comment.