Who is this for?
This is an advanced topic for embedded software developers looking at migrating Linux workloads to aarch64.
What will you learn?
Upon completion of this Learning Path, you will be able to:
- Understand software migration methodology
- Use different Arm compilers and libraries
- Port applications containing compiler intrinsics
Prerequisites
Before starting, you will need the following:
- Introductory understanding of software containers
- Knowledge about building workflows
- Access to an aarch64 or x86_64 machine running Linux
Summary
This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
You’ll migrate an
x86_64 Linux Sobel-filter application to aarch64 through a structured porting workflow. First, you’ll create an aarch64 GCC container, adjust source and build options, replace x86_64 intrinsics with SIMD Everywhere (SIMDe), and compile with CMake. Then, you’ll run each implementation, compare execution times and images, and validate through emulation or remote Arm hardware.Frequently asked questions
These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
Use an
aarch64 GCC development container on your x86_64 machine. Aim to match the original GCC version when possible, and run the build steps inside that container.Clone the
GitHub repository
and change into that directory. Follow the provided CMake commands to configure
src into a build directory and then build from there.Use SIMDe to replace the AVX intrinsics so the code compiles for
aarch64. Make source and build option changes iteratively until the project compiles in the aarch64 container.The program prints execution times in microseconds for the non-SIMD, SIMD, and OpenCV implementations. It also opens four windows showing the original image and outputs from each implementation.
No. You can run and validate the port using emulation or remote hardware. Physical Arm hardware isn’t required.