Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
55ae4a0
Add Build an Android chat app with ONNX Runtime generate() API Learni…
mitsunami Oct 16, 2024
c78e361
Update _index.md
pareenaverma Oct 17, 2024
594b8fc
feat: wpa install guide
Alaaeddine-chakroun Oct 16, 2024
7f9c058
docs: fix formatting
Alaaeddine-chakroun Oct 17, 2024
f975590
docs: fix repo links
Alaaeddine-chakroun Oct 17, 2024
9f05ead
Editorial review
NickSample Oct 23, 2024
0fb1157
add missing python package for tools scripts.
jasonrandrews Oct 24, 2024
7fa71a5
Merge pull request #1351 from jasonrandrews/review
jasonrandrews Oct 24, 2024
a4b4713
Test update windows-perf-vs-extension.md
NickSample Oct 24, 2024
7e31708
Incorporating Maddy updates
NickSample Oct 24, 2024
8541b93
Merge pull request #1348 from NickSample/wperf-vs-extension
pareenaverma Oct 24, 2024
359ad5e
Update _index.md
pareenaverma Oct 24, 2024
0264d52
Update 1-dev-env-setup.md
pareenaverma Oct 24, 2024
2ef718b
Update 3-build-onnxruntime-generate-api.md
pareenaverma Oct 24, 2024
60359af
Update 2-build-onnxruntime.md
pareenaverma Oct 24, 2024
783fb7f
Editorial review
NickSample Oct 24, 2024
05d48c7
Update 3-build-onnxruntime-generate-api.md
pareenaverma Oct 24, 2024
a7fb716
Google Axion Updates
Oct 24, 2024
e750a1b
Further edit from KB
NickSample Oct 24, 2024
e93454e
Update 2-build-onnxruntime.md
pareenaverma Oct 24, 2024
579e490
Update 3-build-onnxruntime-generate-api.md
pareenaverma Oct 24, 2024
775aab8
Update 4-run-benchmark-on-android.md
pareenaverma Oct 24, 2024
28b9317
Update 5-build-android-chat-app.md
pareenaverma Oct 24, 2024
9df0157
Update _review.md
pareenaverma Oct 24, 2024
a7b00fe
Update _next-steps.md
pareenaverma Oct 24, 2024
204d820
Update _next-steps.md
pareenaverma Oct 24, 2024
595187f
Update 4-run-benchmark-on-android.md
pareenaverma Oct 24, 2024
c3173a8
Merge pull request #1331 from mitsunami/koki/android-onnxruntime
pareenaverma Oct 24, 2024
5377dac
Merge pull request #1353 from NickSample/KubeArchInspect_LP
pareenaverma Oct 24, 2024
5bc176c
add utm in zilliz document
zc277584121 Oct 25, 2024
ebc70c3
Editorial review
NickSample Oct 25, 2024
d46fafd
Merge pull request #1354 from pbk8s/main
pareenaverma Oct 25, 2024
60a5f60
KB updates
NickSample Oct 25, 2024
2005900
Merge pull request #1356 from NickSample/Android-chat-app-ONNX-Runtime
pareenaverma Oct 25, 2024
2f16992
Merge pull request #1355 from zc277584121/main
jasonrandrews Oct 25, 2024
fc84d71
Merge pull request #1334 from Alaaeddine-chakroun/windowsperf-wpa-plu…
jasonrandrews Oct 28, 2024
7be8574
Review the WPA plugin install guide
jasonrandrews Oct 28, 2024
16e26da
Merge pull request #1358 from jasonrandrews/review
jasonrandrews Oct 28, 2024
b6c0549
WPA plugin install guide to draft mode
jasonrandrews Oct 30, 2024
fb609bf
Merge pull request #1360 from jasonrandrews/review
jasonrandrews Oct 30, 2024
e1dbecc
Update _index.md
pareenaverma Oct 30, 2024
8210175
Update _index.md
pareenaverma Oct 30, 2024
64268b7
Update _index.md
pareenaverma Oct 30, 2024
446888f
Update contributors.csv
pareenaverma Oct 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions assets/contributors.csv
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ Cyril Rohr,RunsOn,crohr,cyrilrohr,,
Rin Dobrescu,Arm,,,,
Przemyslaw Wirkus,Arm,PrzemekWirkus,przemyslaw-wirkus-78b73352,,
Nader Zouaoui,Day Devs,nader-zouaoui,nader-zouaoui,@zouaoui_nader,https://daydevs.com/
Alaaeddine Chakroun,Day Devs,Alaaeddine-Chakroun,alaaeddine-chakroun,,https://daydevs.com/
Koki Mitsunami,Arm,,,,
Chen Zhang,Zilliz,,,,
Binary file added content/install-guides/_images/about-wpa.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 22 additions & 28 deletions content/install-guides/windows-perf-vs-extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,38 +28,33 @@ multi_install: FALSE # Set to true if first page of multi-page article, else fal
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
---
[WindowsPerf](/install-guides/wperf/) is a lightweight performance profiling tool inspired by Linux Perf, and specifically tailored for Windows on Arm. It leverages the AArch64 Performance Monitoring Unit (PMU) and its hardware counters to offer precise profiling capabilities.

## Introduction
Recognizing the complexities of command-line interaction, the WindowsPerf GUI is a Visual Studio 2022 extension created to provide a more intuitive, integrated experience within the Integrated Development Environment (IDE). This tool enables developers to interact with WindowsPerf, adjust settings, and visualize performance data seamlessly in Visual Studio.

WindowsPerf is a lightweight performance profiling tool inspired by Linux Perf, and specifically tailored for Windows on Arm. It leverages the ARM64 PMU (Performance Monitor Unit) and its hardware counters to offer precise profiling capabilities.

Recognizing the complexities of command-line interaction, the WindowsPerf GUI is a Visual Studio 2022 extension created to provide a more intuitive, integrated experience within the integrated development environment (IDE). This tool enables developers to interact with WindowsPerf, adjust settings, and visualize performance data seamlessly in Visual Studio.

## A Glimpse of the available features
## Overview of key features

The WindowsPerf GUI extension is composed of several key features, each designed to streamline the user experience:

- **WindowsPerf Configuration**: Connect directly to `wperf.exe` for a seamless integration. Configuration is accessible via `Tools -> Options -> Windows Perf -> WindowsPerf Path`.
- **Host Data**: Understand your environment with `Tools -> WindowsPerf Host Data`, offering insights into tests run by WindowsPerf.
- **Output Logging**: All commands executed through the GUI are logged, ensuring transparency and aiding in performance analysis.
- **Sampling UI**: Customize your sampling experience by selecting events, setting frequency and duration, choosing programs for sampling, and comprehensively analyzing results.
- **WindowsPerf Configuration**: Connect directly to `wperf.exe` for a seamless integration. Configuration is accessible by selecting **Tools > Options > Windows Perf > WindowsPerf Path**.
- **Host Data**: Understand your environment by selecting **Tools** then **WindowsPerf Host Data**. This offers insights into tests run by WindowsPerf.
- **Output Logging**: All commands executed through the GUI are logged, ensuring transparency and supporting performance analysis.
- **Sampling UI**: Customize your sampling experience by selecting events, setting frequency and duration, choosing programs for sampling, and comprehensively analyzing results. See screenshot below.

![Sampling preview #center](../_images/wperf-vs-extension-sampling-preview.png "Sampling settings UI Overview")


- **Counting Settings UI**: Build a `wperf stat` command from scratch using the configuration interface, then view the output in the IDE or open it with Windows Performance Analyzer (WPA)


![Counting preview #center](../_images/wperf-vs-extension-counting-preview.png "_Counting settings UI Overview_")
- **Counting Settings UI**: Build a `wperf stat` command from scratch using the configuration interface, then view the output in the IDE or open it with Windows Performance Analyzer (WPA). See screenshot below.


## Getting Started
![Counting preview #center](../_images/wperf-vs-extension-counting-preview.png "Counting settings UI Overview")

### Prerequisites
## Before you begin

- **Visual Studio 2022**: Ensure you have Visual Studio 2022 installed on your Windows on Arm device.
- **WindowsPerf**: Download and install WindowsPerf by following the [WindowsPerf install guide](/install-guides/wperf/).
- **LLVM** (Recommended): You can install the LLVM toolchain by following the [LLVM toolchain for Windows on Arm install guide](/install-guides/llvm-woa).
Before installing WindowsPerf Visual Studio Extension, check the following:
1. Ensure Visual Studio 2022 is installed on your Windows on Arm device.
2. Download and install WindowsPerf by following the [WindowsPerf install guide](/install-guides/wperf/).
3. (Recommended) You can install the LLVM toolchain by following the [LLVM toolchain for Windows on Arm install guide](/install-guides/llvm-woa).

{{% notice llvm-objdump %}}
The disassembly feature needs to have `llvm-objdump` available at `%PATH%` to work properly.
Expand All @@ -69,11 +64,10 @@ The disassembly feature needs to have `llvm-objdump` available at `%PATH%` to wo

To install the WindowsPerf Visual Studio Extension from Visual Studio:

1. Open Visual Studio 2022
2. Go to the `Extensions` menu
3. Select **Manage Extensions**
4. Click on the search bar ( or tap `Ctrl` + `L` ) and type `WindowsPerf`
5. Click on the install button and restart Visual Studio
1. Open Visual Studio 2022.
2. Go to the **Extensions** menu and select **Manage Extensions**.
4. Click on the search bar (Ctrl+L) and type `WindowsPerf`.
5. Click on the **Install** button and restart Visual Studio.

![WindowsPerf install page #center](../_images/wperf-vs-extension-install-page.png)

Expand All @@ -83,7 +77,7 @@ You can also install the WindowsPerf Visual Studio Extension from GitHub.

Download the installation file directly from the [GitHub release page](https://github.com/arm-developer-tools/windowsperf-vs-extension/releases).

Unzip the downloaded file and double click on the `WindowsPerfGUI.vsix` file
Unzip the downloaded file and double click on the `WindowsPerfGUI.vsix` file.

{{% notice Note %}}
Make sure that any previous version of the extension is uninstalled and that Visual Studio is closed before installing the extension.
Expand All @@ -97,10 +91,10 @@ Building the source is not required, but offered as an alternative installation

### WindowsPerf Setup

To get started, you must link the GUI with the executable file `wperf.exe` by navigating to `Tools -> Options -> WindowsPerf -> WindowsPerf Path`. This step is crucial for utilizing the GUI, and the extension will not work if you don't do it.
To get started, you must link the GUI with the executable file `wperf.exe` by navigating to **Tools > Options > WindowsPerf > WindowsPerf Path**. This step is crucial for utilizing the GUI, and the extension will not work if you don't do it.

## Uninstall the WindowsPerfGUI extension

In Visual Studio go to `Extensions` -> `Manage Extensions` -> `Installed` -> `All` -> `WindowsPerfGUI` and select "Uninstall".
In Visual Studio go to **Extensions > Manage Extensions > Installed > All > WindowsPerfGUI** and select **Uninstall**.

Please note that this will be scheduled by Visual Studio. You may need to close VS instance and follow uninstall wizard to remove the extension.
As this will be scheduled by Visual Studio, you might need to close the VS instance and follow the uninstall wizard to remove the extension.
139 changes: 139 additions & 0 deletions content/install-guides/windows-perf-wpa-plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
---
### Title the install tools article with the name of the tool to be installed
### Include vendor name where appropriate
title: Windows Performance Analyzer (WPA) Plugin
minutes_to_complete: 15

draft: true

official_docs: https://github.com/arm-developer-tools/windowsperf-wpa-plugin

author_primary: Alaaeddine Chakroun

### Optional additional search terms (one per line) to assist in finding the article
additional_search_terms:
- perf
- profiling
- profiler
- windows
- woa
- windows on arm
- windows performance analyzer
- wpa

### FIXED, DO NOT MODIFY
weight: 1 # Defines page ordering. Must be 1 for first (or only) page.
tool_install: true # Set to true to be listed in main selection page, else false
multi_install: FALSE # Set to true if first page of multi-page article, else false
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
---

## What is the Windows Performance Analyzer plugin?

The Windows Performance Analyzer plugin connects Windows Perf to the Windows Performance Analyzer (WPA).

[WindowsPerf](https://github.com/arm-developer-tools/windowsperf) is a lightweight performance profiling tool inspired by Linux Perf and designed for Windows on Arm.

Windows Performance Analyzer (WPA) is a tool that creates graphs and data tables of Event Tracing for Windows (ETW) events that are recorded by Windows Performance Recorder (WPR), Xperf, or an assessment that is run in the Assessment Platform. WPA opens event trace log (ETL) files for analysis.

The WPA plugin is built using the [Microsoft Performance Toolkit SDK](https://github.com/microsoft/microsoft-performance-toolkit-sdk), a collection of tools to create and extend performance analysis applications. The plugin parses json output from WidowsPerf so that it can be visualized in WPA.

## What are some of the features of the WPA plugin?

The WindowsPerf GUI extension is composed of several key features, each designed to streamline the user experience:

### What is the timeline view?

The timeline view visualizes the `wperf stat` timeline data plotted by event group.

![Timeline By Core Table](/install-guides/_images/wpa-timeline-by-core.png)

### What is the telemetry view?

The telemetry view displays telemetry events grouped by unit.

![Telemetry Table](/install-guides/_images/wpa-telemetry-table.png)

## How do I install the WPA plugin?

Before using the WPA plugin, make sure you have installed WPA.

### Windows Performance Analyzer

WPA is included in the Windows Assessment and Deployment Kit (Windows ADK) that can be downloaded from [Microsoft](https://go.microsoft.com/fwlink/?linkid=2243390).

{{% notice Note %}}
The WPA plugin requires WPA version `11.0.7.2` or higher.
{{% /notice %}}

Run the downloaded `adksetup.exe` program.

Specify the default installation location and accept the license agreement.

Make sure that "Windows Performance Toolkit" is checked under "Select the features you want to install".

![WPA Installation](/install-guides/_images/wpa-installation.png)

Finally, click Install.

### Windows Performance Analyzer plugin

The plugin is a single `.dll` file.

Download a `.zip` file from the [GitHub releases page](https://github.com/arm-developer-tools/windowsperf-wpa-plugin/releases).

To download the latest version from the command prompt:

```console
mkdir wpa-plugin
cd wpa-plugin
curl -L -O https://github.com/arm-developer-tools/windowsperf-wpa-plugin/releases/download/1.0.2/wpa-plugin-1.0.2.zip
```

Extract the `.dll` file from the downloaded `.zip` file.

```console
tar -xmf wpa-plugin-1.0.2.zip
```

You now have the file `WPAPlugin.dll` in your `wpa-plugin` directory.

There are three ways you can install the `WPAPlugin.dll` file:

###### 1. Copy the plugin dll to the CustomDataSources directory next to the WPA executable.

The default location is:
`C:\\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\CustomDataSources`

###### 2. Set an environment variable

Set the `WPA_ADDITIONAL_SEARCH_DIRECTORIES` environment variable to the location of the DLL file.

###### 3. Start WPA from the command line and pass the plugin directory location using a flag.

Use the `-addsearchdir` flag for `wpa`:

```bash
wpa -addsearchdir "%USERPROFILE%\plugins"
```

## How can I verify the WPA plugin is installed?

To verify the plugin is loaded, launch WPA and the plugin should appear under `Help > About Windows Performance Analyzer`

![WPA installation confirmation](/install-guides/_images/about-wpa.png)

## How can I run the WPA plugin from the command line?

To open a json file directly from the command line, you can use the `-i` flag to specify the file path to open.

For example: to open `timeline_long.json` in your downloads directory, run the command:

```console
wpa -i "%USERPROFILE%\\Downloads\\timeline_long.json"
```
## How do I uninstall the WPA plugin?

To uninstall the plugin simply delete the `WPAPlugin.dll` file.

Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@ A GitLab Runner works with GitLab CI/CD to run jobs in a pipeline. It acts as an
3. Multi-architecture support: GitLab runners support multiple architectures including - `x86/amd64` and `arm64`

## What is Google Axion?
Axion is Google’s first Arm-based server processor, built using the Armv9 Neoverse V2 CPU. The VM instances are part of the `C4A` family of compute instances. To learn more about Google Axion refer to this [blog](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu).

Note: These `C4A` VM instances are in public preview and needs a signup to be enabled in your Google Cloud account/project.
Axion is Google’s first Arm-based server processor, built using the Armv9 Neoverse V2 CPU. The VM instances are part of the `C4A` family of compute instances. To learn more about Google Axion refer to this [page](cloud.google.com/products/axion).

## Install GitLab runner on a Google Axion VM

Expand Down
3 changes: 0 additions & 3 deletions content/learning-paths/cross-platform/gitlab/_index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
---
title: Build a CI/CD pipeline with GitLab on Google Axion
draft: true
cascade:
draft: true

minutes_to_complete: 30

Expand Down
10 changes: 5 additions & 5 deletions content/learning-paths/servers-and-cloud-computing/csp/google.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ layout: "learningpathall"

As with most cloud service providers, Google Cloud offers a pay-as-you-use [pricing policy](https://cloud.google.com/pricing), including a number of [free](https://cloud.google.com/free/docs/free-cloud-features) services.

This section is to help you get started with [Google Cloud Compute Engine](https://cloud.google.com/compute) compute services, using Arm-based [Tau T2A](https://cloud.google.com/tau-vm) Virtual Machines. This is a general-purpose compute platform, essentially your own personal computer in the cloud.
This section is to help you get started with [Google Cloud Compute Engine](https://cloud.google.com/compute) compute services, using Arm-based Virtual Machines. Google Cloud offers two generations of Arm-based VMs, `C4A` is the latest generation based on [Google Axion](cloud.google.com/products/axion), Google’s first Arm-based server processor, built using the Armv9 Neoverse V2 CPU. The previous generation VMs are based on Ampere Altra processor and part of [Tau T2A](https://cloud.google.com/tau-vm) family of Virtual Machines.

Detailed instructions are available in the Google Cloud [documentation](https://cloud.google.com/compute/docs/instances).

Expand All @@ -23,7 +23,7 @@ If using an organization's account, you will likely need to consult with your in

## Browse for an appropriate instance

Google Cloud offers a wide range of instance types, covering all performance (and pricing) points. For an overview of the Tau T2A instance types, see the [General-purpose machine family](https://cloud.google.com/compute/docs/general-purpose-machines#t2a_machines) overview.
Google Cloud offers a wide range of instance types, covering all performance (and pricing) points. For an overview of the `C4A` instance types, see this [page](cloud.google.com/products/axion). Similarly, to know more about the `T2A` instance types, see the [General-purpose machine family](https://cloud.google.com/compute/docs/general-purpose-machines#t2a_machines) overview.

Also note which [regions](https://cloud.google.com/compute/docs/regions-zones#available) these servers are available in.

Expand All @@ -49,15 +49,15 @@ Select an appropriate `region` and `zone` that support Arm-based servers.

![google3 #center](https://github.com/ArmDeveloperEcosystem/arm-learning-paths/assets/71631645/f2a19cd0-7565-44d3-9e6f-b27bccad3e86 "Select an appropriate region and zone")

To view the latest information on which available regions and zones support Arm-based servers, see the [Compute Engine documentation](https://cloud.google.com/compute/docs/regions-zones#available). To filter for Arm-based machines, click on `Select a machine type`, then select `T2A` from the pull-down menu.
To view the latest information on which available regions and zones support Arm-based servers, see the [Compute Engine documentation](https://cloud.google.com/compute/docs/regions-zones#available). To filter for Arm-based machines, click on `Select a machine type`, then select `T2A` or `C4A` from the pull-down menu.

![google4 #center](https://github.com/ArmDeveloperEcosystem/arm-learning-paths/assets/71631645/5b1683dc-724f-4c60-aea6-dc945c7bf6bc "Check which regions and zones support Arm-based machines")

### Machine configuration

Select `T2A` from the `Series` pull-down menu. Then select an appropriate `Machine type` configuration for your needs.
Select `C4A` from the `Series` pull-down menu. Then select an appropriate `Machine type` configuration for your needs.

![google5 #center](images/gcp_instance.png "Select an appropriate T2A machine type")
![google5 #center](images/gcp_instance_new.png "Select an appropriate C4A machine type")

### Boot disk configuration

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ resource "google_project_iam_member" "project" {
resource "google_compute_instance" "bastion_host" {
project = var.project
name = "bastion-vm"
machine_type = "t2a-standard-1"
machine_type = "c4a-standard-1"
zone = var.zone
tags = ["public"]
boot_disk {
Expand All @@ -91,7 +91,7 @@ resource "google_compute_instance" "bastion_host" {
resource "google_compute_instance" "private" {
project = var.project
name = "bastion-private"
machine_type = "t2a-standard-1"
machine_type = "c4a-standard-1"
zone = var.zone
allow_stopping_for_update = true
tags = ["private"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ provider "google" {

resource "google_compute_instance" "vm_instance" {
name = "instance-arm"
machine_type = "t2a-standard-1"
machine_type = "c4a-standard-1"

boot_disk {
initialize_params {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
---
title: Optimize MLOps with Arm-hosted GitHub Runners
draft: true
cascade:
draft: true

minutes_to_complete: 60

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
title: Learn how to migrate an x86 application to multi-architecture with Arm on Google Kubernetes Engine (GKE)
title: Learn how to migrate an x86 application to multi-architecture with Arm-based on Google Axion Processor on GKE

minutes_to_complete: 30

who_is_this_for: This is an advanced topic for software developers who are looking to migrate their existing x86 containerized applications to Arm

learning_objectives:
- Add Arm-based nodes to an existing x86-based GKE cluster
- Add Arm-based nodes (Google Axion) to an existing x86-based GKE cluster
- Rebuild an x86-based application to make it multi-arch and run on Arm
- Learn how to add taints and tolerations to GKE clusters to schedule application pods on architecture specific nodes
- Run a multi-arch application across multiple architectures on a single GKE cluster
Expand Down
Loading