Skip to content

Commit

Permalink
Merge pull request #799 from ArmDeveloperEcosystem/main
Browse files Browse the repository at this point in the history
Merge to production
  • Loading branch information
pareenaverma authored Mar 15, 2024
2 parents b57cf21 + 843a2f1 commit 0dcaad2
Show file tree
Hide file tree
Showing 172 changed files with 3,403 additions and 170 deletions.
112 changes: 112 additions & 0 deletions .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2288,3 +2288,115 @@ viewport
unrealengine
LOD
vr
LRU
framebuffer
VSE
reshading
neighbouring
neighbours
performancestudio
AFRC
Khronos
TLAS
swapchain
FMA
variadic
svld
kotlinlang
LinearLayout
armsve
kotlin
runCalculations
bitrate
VkImageCompressionPropertiesEXT
VkImageSubresource
vkGetImageSubresourceLayout
KhronosGroup
adoc
AFBC
VkImage
VkImageCreateInfo
VkImageFormatProperties
VkImageCompressionControlEXT
BPC
Sponza
VK
VkDeviceCreateInfo
vkCreateDevice
vkEnumerateDeviceExtensionProperties
URP
BurstNeonCollisions
SampleScene
AABB
AABBs
autoconnect
PlayerLoop
ScriptRunBehaviourUpdate
MonoBehaviours
BehaviourUpdate
Alloc
GC
BurstNeonCollisions
CollisionCalculationScript
BeginSample
Gfx
WaitForPresent
EndSample
codeMode
Vn
CollisionMovement
ScreenWriteout
numChar
MoveClearFromCharacters
MoveClearFromWalls
RandomMovement
BurstCompile
IJob
dynamicCollisions
ScriptHolder
AOT
AggressiveInlining
Bitwise
BurstNeonCalculationScript
Compiling Dictionary...
DoCharactersPlain
DoSetup
DoWallsBurst
DoWallsNeon
DoWallsPlain
DynamicCollisionCalculations
DynamicCollisionObject
IsNeonSupported
MethodImpl
MethodImplOptions
Misspelled words:
Monobehaviour
NeonAABBObjCollisionDetectionUnrolled
NeonRadiusObjCollisionDetectionUnrolled
NoAlias
Running Task: Markdown...
ScriptHolder
SpawningScript
StaticCollisionCalculations
StaticCollisionObject
StaticCollisionObjects
Using aspell to spellcheck Markdown
VSTR
bitwise
collisioncalc
detections
foreach
inlined
iteratively
occured
spawner
staticObjects
tblindex
vcgeq
vdupq
vld
vmvn
vorrq
vqtbl
vqtbx
wmvn
31 changes: 21 additions & 10 deletions content/install-guides/ams.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
### Title the install tools article with the name of the tool to be installed
### Include vendor name where appropriate
title: Arm Mobile Studio
title: Arm Performance Studio

### Optional additional search terms (one per line) to assist in finding the article
additional_search_terms:
Expand Down Expand Up @@ -29,28 +29,39 @@ multi_install: false # Set to true if first page of multi-page articl
multitool_install_part: false # Set to true if a sub-page of a multi-page article, else false
layout: installtoolsall # DO NOT MODIFY. Always true for tool install articles
---
[Arm Mobile Studio](https://developer.arm.com/Tools%20and%20Software/Arm%20Mobile%20Studio) is a performance analysis tool suite for developers to performance test their Android apps on Mali-based GPUs. It comprises of 4 easy-to-use tools that show you how well your game or app performs on off-the-shelf devices, so that you can identify problems that might cause slow performance, overheat the device, or drain the battery.
[Arm Performance Studio](https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Studio%20for%20Mobile) (formally known as `Arm Mobile Studio`) is a performance analysis tool suite for various application developers:

* Android application developers
* Linux application developers in Embedded and Cloud segments

It comprises of a suite of easy-to-use tools that show you how well your game or app performs on production devices, so that you can identify problems that might cause slow performance, overheat the device, or drain the battery.

[Frame Advisor](https://developer.arm.com/Tools%20and%20Software/Frame%20Advisor) is available in `2023.5` and later.

[RenderDoc for Arm GPUs](https://community.arm.com/arm-community-blogs/b/graphics-gaming-and-vr-blog/posts/beyond-mobile-arm-mobile-studio-is-now-arm-performance-studio) is available in `2024.0` and later.

All features of Arm Performance Studio are available free of charge without any additional license as of the `2022.4` release.

## Installation

Arm Mobile Studio is supported on Windows, Linux, and macOS hosts. Download the appropriate installer from the [Arm Product Download Hub](https://developer.arm.com/downloads/view/MOBST-PRO0).
Arm Performance Studio is supported on Windows, Linux, and macOS hosts. Download the appropriate installer from the [Arm Product Download Hub](https://developer.arm.com/downloads/view/MOBST-PRO0).

Full installation and application launch instructions are given in the Arm Mobile Studio [Release Notes](https://developer.arm.com/documentation/107649).
Full installation and application launch instructions are given in the Arm Performance Studio [Release Notes](https://developer.arm.com/documentation/107649).

### Windows

Run the supplied `Arm_Mobile_Studio_<version>.exe` installer, and follow on-screen instructions.
Run the supplied `Arm_Performance_Studio_<version>_windows_x86-64.exe` installer, and follow on-screen instructions.

### Linux

Unpack the supplied `Arm_Mobile_Studio_<version>_linux.tgz` installation package.
Unpack the supplied `Arm Performance Studio` bundle to the desired location. For example:
```command
tar -xf Arm_Mobile_Studio_2023.5_linux_x86-64.tgz
tar -xf Arm_Performance_Studio_2024.0_linux_x86-64.tgz
```
### macOS

Run the supplied `Arm_Mobile_Studio_<version>_macos.dmg` installer, and follow on-screen instructions.
Run the supplied `Arm_Performance_Studio_<version>_macos_x86-64.dmg` installer, and follow on-screen instructions.

## Licensing
## Get started

As of the 2022.4 release, all features of Arm Mobile Studio are available for use free of charge without any additional license.
See the [Get started with Arm Performance Studio for Mobile](/learning-paths/smartphones-and-mobile/ams/) learning path for a collection of tutorials for each component of Performance Studio.
20 changes: 17 additions & 3 deletions content/install-guides/pytorch.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ alias python=python3
To install PyTorch run:

```bash
sudo pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
sudo pip install torch torchvision torchaudio
```

## Get started
Expand Down Expand Up @@ -122,7 +122,7 @@ PyTorch built with:

The configuration output is an advanced option to check the tools and structure used to build PyTorch.

# BFloat16 floating-point number format
## BFloat16 floating-point number format

Recent Arm processors support the BFloat16 (BF16) number format in PyTorch. For example, AWS Graviton3 processors support BFloat16.

Expand All @@ -140,14 +140,28 @@ Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asi

If the result is blank, you do not have a processor with BFloat16.

BFloat16 provides improved performance and a smaller memory footprint with the same dynamic range. You may want to experiment with BFloat16 when trading off accuracy with performance.
BFloat16 provides improved performance and smaller memory footprint with the same dynamic range. You may see a slight drop in model inference accuracy with BFloat16, but the impact is acceptable for the majority of applications.

You can use an environment variable to enable BFloat16:

```console
export DNNL_DEFAULT_FPMATH_MODE=BF16
```

## LRU cache capacity

LRU cache capacity is used to avoid redundant primitive creation latency overhead.

This caching feature increases memory usage. If needed, you can lower the value to reduce memory usage.

You should tune the capacity to an optimal value for your use case.

Use an environment variable to set the value. The recommended starting value is:

```console
export LRU_CACHE_CAPACITY=1024
```

## Transparent huge pages

Transparent huge pages (THP) provide an alternative method of utilizing huge pages for virtual memory. Enabling THP may result in improved performance because it reduces the overhead of Translation Lookaside Buffer (TLB) lookups by using a larger virtual memory page size.
Expand Down
51 changes: 38 additions & 13 deletions content/install-guides/socrates.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ minutes_to_complete: 30
author_primary: Ronan Synnott

### Link to official documentation
official_docs: https://developer.arm.com/documentation/101399
official_docs: https://developer.arm.com/documentation/101400

### PAGE SETUP
weight: 1 # Defines page ordering. Must be 1 for first (or only) page.
Expand All @@ -28,42 +28,67 @@ multi_install: false # Set to true if first page of multi-page articl
multitool_install_part: false # Set to true if a sub-page of a multi-page article, else false
layout: installtoolsall # DO NOT MODIFY. Always true for tool install articles
---
[Arm Socrates](https://developer.arm.com/Tools%20and%20Software/Socrates) is a tool used to select, configure and create Arm IP for easy and error free integration into a System on Chip(SoC).

## Before you begin

Arm Socrates requires a Linux machine running Red Hat Enterprise Linux.

Full specifications are given in section 3.2 of the [Installation Guide](https://developer.arm.com/documentation/101400)
[Arm Socrates](https://developer.arm.com/Tools%20and%20Software/Socrates) is a tool used to select, configure and create Arm IP for easy and error free integration into a System on Chip(SoC).

## Download installer packages

Socrates is a component of [Arm Hardware Success Kits](https://www.arm.com/products/development-tools/success-kits). It is available to download via the [Arm Product Download Hub](https://developer.arm.com/downloads/view/HWSKT-KS-0002).

You can download Socrates as an individual standalone component, or you can download the complete success kits. The installer is available for Linux only.
You can download Socrates as an individual standalone component, or you can download the complete success kits.

For more information on the Download Hub, refer to the [Arm Product Download Hub install guide](../pdh).

## Installation

Arm Socrates requires a Linux machine running Red Hat Enterprise Linux.

Full specifications are given in the [Installation Guide](https://developer.arm.com/documentation/101400/latest/Setting-up-your-environment/Installation-requirements).

Extract the downloaded software and run the installer. For example:

```command
tar -xf socrates.tar.gz
./ARM-Socrates-1.8.0.1-Linux-x86-64-Install --S --i-agree-to-the-contained-eula
```

Full installation instructions are provided in the [Arm Socrates Installation Guide](https://developer.arm.com/documentation/101400).

For more information on the Download Hub, refer to the [Arm Product Download Hub install guide](../pdh).
See also the output of:
```command
./ARM-Socrates-1.8.0.1-Linux-x86-64-Install --help
```

## Update IP Catalog

You will first need to update the `IP Catalog` within the IDE.

A short-cut should pop-up, else navigate the menu to `Window` > `Preferences` > `IP Catalog` > `Updates`, and click `Check for updates`.

Click `Install IP Catalog Updates` if needed.

Click `Apply and Close` when complete.

## Set up the product license

Arm Socrates Tool is license managed. License setup instructions are available in the [Arm License install guide](../license/).

Configuration of some Arm IP products require a corresponding license for that IP.

Full details are provided in Section 5 "Setting up the License" of the [Installation Guide](https://developer.arm.com/documentation/101400).
Full details are provided in the [Installation Guide](https://developer.arm.com/documentation/101400/latest/Setting-up-licensing).

## Get started

To check Socrates has installed correctly, use the socrates.sh command or double‑click the Socrates™ icon to start Socrates™.
You can run socrates.sh directly from the installation location, through an alias to the installation location, or you can add the installation location to your path variable.
To check Socrates has installed correctly, use the `socrates.sh` command or double‑click the Socrates icon.

There is an Installation Health Check script provided that runs the first time that you start the software, or the first time that you run a new version. The script checks that all required dependencies are installed and identifies any common installation problems.
You can run `socrates.sh` directly from the installation location, through an alias to the installation location, or you can add the installation location to your path variable.

There is an `Installation Health Check` script provided that runs the first time that you start the software, or the first time that you run a new version. The script checks that all required dependencies are installed and identifies any common installation problems.

Arm has produced a series of videos to help new users get started and learn how to use the tool.\
They are available on the [Arm YouTube channel](https://www.youtube.com/c/arm):

* [Getting Started](https://youtube.com/playlist?list=PLgyFKd2HIZlY_y7b5OTtyrso45q-eCM_s)
* [NIC-400 Configuration](https://youtube.com/playlist?list=PLgyFKd2HIZlaQBfd8YEMwSQX_cWIxODgG)
* [NI-700 Configuration](https://youtube.com/playlist?list=PLgyFKd2HIZlahIsHSSw7ViwiFxeBYc36b)

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Get started with WindowsPerf

minutes_to_complete: 15

who_is_this_for: This is an introductory topic for developers working on laptops and desktops and new to the Arm architecture.
who_is_this_for: This is an introductory topic for software developers working on laptops and desktops and new to the Arm architecture.

learning_objectives:
- Install WindowsPerf on Windows on Arm machine
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ review:
- questions:
question: >
Performance metrics are per processor.
Performance metrics are generated per processor.
answers:
- "True"
- "False"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
---
title: "Embedded programming with the Raspberry Pi Pico"

draft: true

minutes_to_complete: 10
title: Getting Started with embedded programming with the Raspberry Pi Pico

who_is_this_for: This is an introductory topic for software developers interested in embedded programming.
minutes_to_complete: 60
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,34 @@ layout: "learningpathall"

# The application stack

Application developers will be familiar with this traditional computing stack, whether their target devices were desktops, mobile phones, or the cloud, it would be the same.
Application developers will be familiar with this traditional computing stack, whether their target devices are desktops, mobile phones, or the cloud, it would be the same.

![Traditional stack](_images/traditional_stack.png)

## Hardware

At the bottom of the stack you have the physical hardware. As an application developer, the extent that you typically care about this layer is "how much and how fast". You know your application will need some amount of CPU, RAM, and storage, but beyond that you don't need to know or care about the specifics, because you'll never actually talk to the hardware directly.
At the bottom of the stack you have the physical hardware. As an application developer, the extent that you typically care about this layer is "how much and how fast". You know your application will need some amount of CPU, RAM, and storage but beyond that you don't need to know or care about the specifics, because you'll never actually talk to the hardware directly.

## Firmware

One thing that made the PC revolution possible was the use of firmware, or BIOS, that could sit between the hardware layer and the software layer, and provide a set of interfaces for communication between them. This allows a single operating system image, like Windows or Ubuntu, to be installed on any PC, without the image having to be customized for that specific PC's hardware. It's the firmware that allows the OS to boot, discover what hardware is available, and provide an interface to talk to them.
One thing that made the PC revolution possible was the use of firmware, or BIOS, that could sit between the hardware layer and the software layer and provide a set of interfaces for communication between them. This allows a single operating system image, like Windows or Ubuntu, to be installed on any PC, without the image having to be customized for that specific PC's hardware. It's the firmware that allows the OS to boot, discover what hardware is available, and provide an interface to talk to them.

If you've ever wondered why there's not a generic Android install image that you can use for any mobile phone, this is why, mobile phones don't have this firmware layer.
If you've ever wondered why there's not a generic Android install image that you can use for any mobile phone, this is why - mobile phones don't have this firmware layer.

## Software

The software is everything that lives on the hard drive or flash storage, and gets loaded up onto the hardware to run. Most of us don't think of it as all being the same, the kernel and your application are very different in *kind* after all. In reality that distinction is just there to make our lives simpler, and the computing stack easier to understand, the underlying hardware and firmware see it as all the same thing.
The software is everything that lives on the hard drive or flash storage, and gets loaded up onto the hardware to run. Most of us don't think of it as all being the same, the kernel and your application are very different in *kind* after all. In reality, that distinction is just there to make our lives simpler and the computing stack easier to understand, the underlying hardware and firmware see it as all the same thing.

### Kernel

Every modern operating system, whether it's Windows, Mac OS, or Linux, has at its core a kernel (hence the name). The kernel is what gets loaded first by the firmware, and it's responsible for running all other processes, including applications, and interactions between processes and the hardware. It's the kernel that will load your application's code into memory, and start executing it on the CPU. It provides interfaces to access the storage (hard drive or flash) via a filesystem, interfaces to peripherals like a monitor, mouse and keyboard, and even handles memory management for you.
Every modern operating system, whether it's Windows, Mac OS, or Linux, has at its core a kernel (hence the name). The kernel is what gets loaded first by the firmware and is responsible for running all other processes, including applications and interactions between processes and the hardware. It's the kernel that will load your application's code into memory and start executing it on the CPU. It provides interfaces to access the storage (hard drive or flash) via a filesystem, interfaces to peripherals like a monitor, mouse and keyboard, and even handles memory management for you.

### Operating System

Most people think of the kernel and the operating system as the same thing, but as any long-time Linux user will know the kernel is only part of it, you also need a large collection of code, libraries and programs to make up a complete operating system. All the standard command-line tools, system services, and the like, combined with a kernel, is what you typically think of as a complete operating system.
Most people think of the kernel and the operating system as the same thing but, as any long-time Linux user will know the kernel is only part of it, you also need a large collection of code, libraries and programs to make up a complete operating system. All the standard command-line tools, system services, and the like, combined with a kernel, is what you typically think of as a complete operating system.

### Application

And only now do you get to an application. An application is a collection of code, sometimes a single binary file but more often a package of files, that can be executed by the operating system. This is the space that most of us work in, and it means you can largely ignore the operating system and kernel layers, and completely ignore the firmware and hardware layers.
And only now do you get to an application. An application is a collection of code, sometimes a single binary file but more often a package of files, that can be executed by the operating system. This is the space that most of us work in. It means you can largely ignore the operating system and kernel layers, and completely ignore the firmware and hardware layers.

But if you want to transition to the embedded space, things are going to look a little bit different.
But if you want to transition to the embedded space, things are going to look a little bit different.
Loading

0 comments on commit 0dcaad2

Please sign in to comment.