Get started with parallel application development
Introduction
Before you start
Debug your application
Optimize your code
Next Steps
Get started with parallel application development
Who is this for?
This is an advanced topic for high-performance computing software developers writing MPI applications.
What will you learn?
Upon completion of this Learning Path, you will be able to:
- Debug and fix a parallel application
- Profile and optimize your code
- Use optimized routines for common math operations
Prerequisites
Before starting, you will need the following:
- General knowledge about distributed parallelism (MPI)
- Some understanding of C, Python, and Linux commands
- An Arm computer running Linux. Cloud instances can be used, refer to the list of Arm cloud service providers .
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 debug and profile an MPI matrix-multiplication application on Arm Linux with Linaro Forge. First, you’ll build C, Fortran, or Python variants that contain intentional defects, then configure debugging flags and
AddressSanitizer. You’ll then identify and fix errors before rebuilding the application to confirm stable execution. Finally, you’ll profile unoptimized and optimized builds, compare equivalent math libraries, and use profiler output to assess each build and library choice.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.
Run
ddt --version and confirm that it prints Linaro Forge version information.Open the
src directory. You’ll find C, Fortran, and Python matrix-multiplication implementations, each with an intentional bug.Edit
make.def and set CFLAGS = -O0 -g -fsanitize=address. You disable optimization, add debug symbols, and enable AddressSanitizer with these flags.Build with
-O0 and profile the application for a baseline. Then, update CFLAGS in make.def to enable optimization, rebuild, and profile the new executable for comparison.Confirm that the program finishes without crashes or
AddressSanitizer errors. Resolve any reported issues before profiling so that faults don’t distort your measurements.