Skip to content

Commit 475299f

Browse files
Merge pull request #1968 from madeline-underwood/migrate-ease
Migrate ease_JA to check
2 parents a9c3b61 + 7db2432 commit 475299f

File tree

5 files changed

+103
-108
lines changed

5 files changed

+103
-108
lines changed
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
---
22
# User change
3-
title: "Assess your code for migration to Arm"
3+
title: "Assessing your code for migration to Arm"
44

55
weight: 2
66

77
layout: "learningpathall"
88

99
---
1010

11-
### Common Arm Migration Challenges
11+
### Common migration challenges
1212

13-
Migrating applications to Arm-based architectures is increasingly common across cloud, data center, and edge environments. Arm-powered servers and instances, available in AWS, Gooogle Cloud Platform, Microsoft Azure, Alibaba Cloud and Oracle Cloud Infrastructure (OCI), deliver significant performance-per-watt advantages and compelling cost-efficiency.
13+
Migrating applications to Arm-based architectures is increasingly common across cloud, data center, and edge environments. Arm-powered servers and instances, available from AWS, Google Cloud Platform, Microsoft Azure, Alibaba Cloud, and Oracle Cloud Infrastructure (OCI), offer significant performance-per-watt advantages and compelling cost efficiency.
1414

15-
However, porting workloads to from one CPU architecture or another, can often require more than just recompilation. While many applications transition smoothly, others contain architecture-specific code or dependencies – developed originally for x86 – that can lead to build failures, runtime errors, or performance degradation on Arm systems.
15+
However, porting workloads from one CPU architecture to another often requires more than simple recompilation. While many applications transition smoothly, others contain architecture-specific code or dependencies – originally developed for x86 – that can lead to build failures, runtime errors, or performance degradation on Arm systems.
1616

17-
Common challenges include detecting:
18-
* Hardcoded x86 SIMD intrinsics
19-
* Inline assembly
20-
* Platform-specific system calls
21-
* Unsupported compiler flags
22-
* Non-portable build scripts or logic
17+
Common challenges include issues with:
18+
* Hardcoded x86 SIMD intrinsics.
19+
* Inline assembly.
20+
* Platform-specific system calls.
21+
* Unsupported compiler flags.
22+
* Non-portable build scripts or logic.
2323

2424
In large or legacy codebases, these issues are often buried in third-party libraries or auto-generated components, making manual inspection slow and unreliable.
2525

26-
### Automated Analysis for Portability
27-
To address these challenges, static code analysis tools play a critical role. Tools specifically designed for portability analysis enable developers to scan local codebases or remote repositories (e.g., GitHub) and pinpoint architecture-specific constructs before attempting compilation or deployment on Arm. By surfacing portability concerns early in the development cycle, code scanning reduces time-to-first-build and helps prevent complex failures later.
26+
### Automated analysis for portability
27+
To address these challenges, static code analysis tools play a critical role. Tools specifically designed for portability analysis enable developers to scan local codebases or remote repositories (such as GitHub) and pinpoint architecture-specific constructs before attempting compilation or deployment on Arm. By surfacing portability issues early in the development cycle, code scanning reduces time-to-first-build and helps prevent complex failures later on.
2828

29-
In this learning path, you will learn about `migrate-ease`, a tool which allows developers to move beyond trial-and-error debugging to port their code to Arm. It provides clear, actionable insights into potential portability issues, detecting problematic patterns across many mainstream programming languages. These insights, combined with targeted refactoring, accelerate the process of making code portable, maintainable, and production-ready on Arm.
29+
In this Learning Path, you'll use `migrate-ease`, a tool that helps developers move beyond trial-and-error debugging when porting their code to Arm. It provides clear, actionable insights into potential portability issues by detecting problematic patterns across widely used programming languages. These insights - combined with targeted refactoring - accelerate the process of making code portable, maintainable, and production-ready on Arm.
3030

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
# User change
3-
title: "Supported Programming Languages and Common Issues Identified"
3+
title: "Migrate-ease and supported programming languages"
44

55
weight: 3
66

@@ -10,51 +10,51 @@ layout: "learningpathall"
1010

1111
### What is migrate-ease?
1212

13-
[Migrate-ease](https://github.com/migrate-ease/) is a fork of [Porting advisor](https://github.com/arm-hpc/porting-advisor), an open-source project developed by Arm. Migrate-ease is maintained by the [OpenAnolis](https://github.com/openanolis) Arm Working Group.
13+
[`Migrate-ease`](https://github.com/migrate-ease/) is a fork of [Porting Advisor](https://github.com/arm-hpc/porting-advisor), an open-source project developed by the Arm High Performance Computing Group. It is maintained by the [OpenAnolis](https://github.com/openanolis) Arm Working Group.
1414

1515

16-
It is designed to analyze codebases specifically for `x86_64` architectures and offers tailored suggestions to facilitate the migration process to aarch64.
17-
At present, this tool only supports codebase migration to Linux. The tool can be run on Arm or `x86_64` Linux machines. The tool does not modify any code, it inspects your code and provides recommendations.
18-
It does not provide API level recommendations, and it does not send any data back to OpenAnolis.
16+
`Migrate-ease` is designed to analyze codebases targeting `x86_64` architectures and offers tailored suggestions to facilitate migration to AArch64. The tool currently only supports migration to Linux-based environments and can be run on either `x86_64` or Arm AArch64 Linux machines.
1917

20-
### List of Supported Programming Languages
18+
`Migrate-ease` is a read-only tool - it does not modify your code. It analyzes your source tree and provides architecture-specific recommendations. It does not provide API-level guidance, and it does not transmit data back to OpenAnolis.
2119

22-
This tool scans all files in a source tree, regardless of whether they are included by the build system or not. Currently, the tool supports the following languages/dependencies and the types of checks available for each launguage are shown:
20+
### Supported programming languages and checks
2321

24-
#### C, C++
25-
- Inline assembly with no corresponding aarch64 inline assembly
26-
- Assembly code with no corresponding aarch64 assembly code
27-
- Use of architecture specific intrinsic
28-
- Use of architecture specific compilation options
29-
- Preprocessor errors that trigger when compiling on aarch64
30-
- Compiler specific code guarded by compiler specific pre-defined macros
31-
- Missing aarch64 architecture detection in Makefile, Config.guess scripts
32-
- Linking against libraries that are not available on the aarch64 architecture
22+
The tool scans all files in a source tree, whether or not they are included by the build system. The following programming languages and dependency types are supported. For each language, the types of portability checks performed are listed.
23+
24+
#### C and C++
25+
- Inline assembly with no corresponding AArch64 implementation.
26+
- Architecture-specific assembly code.
27+
- Use of architecture-specific intrinsics.
28+
- Architecture-specific compilation options.
29+
- Preprocessor errors triggered when compiling on AArch64.
30+
- Compiler-specific code guarded by compiler-specific macros.
31+
- Missing AArch64 detection logic in Makefile or `config.guess` scripts.
32+
- Linking against libraries not available on AArch64.
3333

3434
#### Go
35-
- Inline assembly with no corresponding aarch64 inline assembly
36-
- Assembly code with no corresponding aarch64 assembly code
37-
- Use of architecture specific intrinsic
38-
- Linking against libraries that are not available on the aarch64 architecture
35+
- Inline assembly with no corresponding AArch64 implementation.
36+
- Architecture-specific assembly code.
37+
- Use of architecture-specific intrinsics.
38+
- Linking against libraries unavailable on AArch64.
3939

4040
#### Python
41-
- Inline assembly with no corresponding aarch64 inline assembly
42-
- Use of architecture specific intrinsic
43-
- Linking against libraries that are not available on the aarch64 architecture
44-
- Use of architecture specific packages
41+
- Inline assembly with no corresponding AArch64 implementation.
42+
- Use of architecture-specific intrinsics.
43+
- Use of architecture-specific packages.
44+
- Linking against libraries unavailable on AArch64.
4545

4646
#### Rust
47-
- Inline assembly with no corresponding aarch64 inline assembly
48-
- Use of architecture specific intrinsic
49-
- Linking against libraries that are not available on the aarch64 architecture
47+
- Inline assembly with no corresponding AArch64 implementation.
48+
- Use of architecture-specific intrinsics.
49+
- Linking against libraries unavailable on AArch64.
5050

5151
#### Java
52-
- JAR scanning
53-
- Dependency versions in `pom.xml` file
54-
- A feature to detect native calls in Java source code
55-
- Compatible version recommendations
52+
- JAR dependency scanning.
53+
- Version checks in `pom.xml` file.
54+
- Detection of native method calls in Java source code.
55+
- Recommendations for compatible versions.
5656

5757
#### Dockerfile
58-
- Use of architecture specific plugin
59-
- The base image that dockerfile is based on does not support aarch64
58+
- Use of architecture-specific plugins.
59+
- Base image does not support AArch64.
6060

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
---
22
# User change
3-
title: "Install migrate-ease"
3+
title: "Getting started with migrate-ease"
44

55
weight: 4
66

77
layout: "learningpathall"
88

99
---
10-
11-
# migrate-ease
12-
13-
[migrate-ease](https://github.com/migrate-ease/migrate-ease) is an open-source project designed to analyze codebases specifically for `x86_64` architectures and offers tailored suggestions aimed at facilitating the migration process to AArch64. This tool streamlines the transition, ensuring a smooth and efficient evolution of your software to leverage the benefits of aarch64 architecture.
14-
15-
## Pre-requisites
16-
Before you use `migrate-ease`, certain pre-requisites need to be installed:
10+
## Set up your environment
11+
Before using `migrate-ease`, install the following system dependencies:
1712
{{< tabpane code=true >}}
1813
{{< tab header="Ubuntu 22.04">}}
1914
sudo apt-get install -y python3 python3-pip python3-venv unzip libmagic1 git
@@ -26,38 +21,36 @@ sudo dnf install -y python3 python3-pip unzip git
2621
{{< /tab >}}
2722
{{< /tabpane >}}
2823

29-
## Install and setup
30-
31-
Start by checking out the repository with the tool's source code:
24+
Clone the repository:
3225
```bash
3326
git clone https://github.com/migrate-ease/migrate-ease
3427
cd migrate-ease
3528
```
3629

37-
At the root directory of migrate-ease, create and activate a python virtual environment:
30+
Create and activate a Python virtual environment:
3831
```bash
3932
python3 -m venv .venv
4033
source .venv/bin/activate
4134
```
4235

43-
Install the python packages dependencies and set the environment variable to point to it:
36+
Install the required packages and set the environment variable:
4437
```bash
4538
pip3 install -r requirements.txt
4639
export PYTHONPATH=`pwd`
4740
```
4841

4942
## Usage
5043

51-
You are now ready to use `migrate-ease` on your source code. You can use the tool either from the command-line or using a Web GUI.
44+
You can use `migrate-ease` from the command-line or through a Web GUI.
5245

5346
### Command-line usage
54-
55-
From the command-line, you can use the tool to scan your local codebases with different programming languages. The result from the code analysis is sent to console by default.
47+
48+
You can scan local codebases written in a supported programming languages. By default, scan results from the code analysis are sent to the console.
5649

5750
```bash
5851
python3 -m {scanner_name} --arch {arch} {scan_path}
5952
```
60-
The result from the scan can also be exported as `txt`, `csv`, `json` or `html`. You will need to specify this using the `--output` option:
53+
The result from the scan can be exported as `txt`, `csv`, `json` or `html`. Specify this using the `--output` option:
6154

6255
To generate a JSON report:
6356
```bash
@@ -68,15 +61,15 @@ Here's an explanation of each of the arguments passed to the scanner tool:
6861

6962
**Parameters**
7063

71-
`{scanner_name}`: The name of the scanner, which can be one of cpp, docker, go, java, python or rust.
64+
`{scanner_name}`: The name of the scanner, which can be one of cpp, docker, go, java, Python or rust.
7265

7366
`{result_file_name}`: The name of the exported results file (without the extension).
7467

75-
`{arch}`: The architecture type, `aarch64` is the default.
68+
`{arch}`: The architecture type; `aarch64` is the default.
7669

77-
`{scan_path}`: The path to the code that needs to be scanned.
70+
`{scan_path}`: The path to the code you want to scan.
7871

79-
You can scan a remote git repository code base as well by passing the URL as shown in the example:
72+
To scan a remote Git repository:
8073
```bash
8174
python3 -m {scanner_name} --output {result_file_name}.json --arch {arch} --git-repo {repo} {clone_path}
8275
```
@@ -86,23 +79,23 @@ There are more parameters for user to control the scan functionality. To see thi
8679
```bash
8780
python3 -m {scanner_name} -h
8881
```
89-
Replace {scanner_name} with either cpp, docker, go, java, python or rust.
82+
Replace {scanner_name} with either cpp, docker, go, java, Python or rust.
9083

91-
### As Web UI
92-
Migrate-ease also provides a Web UI that supports scanning a git repo with cpp, docker, go, java, python and rust scanners in one time.
84+
### GUI
85+
Migrate-ease also provides a Web UI that supports scanning a git repo with cpp, docker, go, java, Python and rust scanners in one time.
9386
To start the web server, simply run:
9487
```
9588
python3 web/server.py
9689
```
9790

98-
Once that is successfully done, you can access a web server hosted at http://localhost:8080
91+
Once the server is running, you can access a web server hosted at http://localhost:8080
9992

100-
The web UI looks as following:
101-
![example image alt-text#center](web_ui_index.jpg "Figure 1. Web UI to scan a git repo")
93+
The web UI looks like this:
94+
![example image alt-text#center](web_ui_index.jpg "Web UI to scan a git repo")
10295

103-
A git repo URL is required, and you can specify certain branch name to scan. Once the necessary information is filled, user can click "START SCAN" button to proceed project scanning.
96+
A git repo URL is required, and you can specify certain branch name to scan. Once the necessary information is filled, you can click the **START SCAN** button to proceed project scanning.
10497

105-
Scanning progress will be shown in the console pane. Once all jobs are done, user will see a web page as following:
106-
![example image alt-text#center](web_ui_result.jpg "Figure 2. Web UI of scan result")
98+
Scanning progress is then shown in the console pane. Once all the jobs are done, you will see a web page like this:
99+
![example image alt-text#center](web_ui_result.jpg "Web UI of scan result")
107100

108-
You can download the result by clicking the "download" icon or view the result by clicking the "eye" icon.
101+
You can download the result by clicking the symbolic download icon button, or view the result by clicking the icon which looks like an eye.

0 commit comments

Comments
 (0)