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

AI-assisted

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.

Close
?
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

AI-assisted

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.

Close
?
How do I confirm that Linaro Forge is installed correctly?
Run ddt --version and confirm that it prints Linaro Forge version information.
After setup, where can I find the example application that I need to build and debug?
Open the src directory. You’ll find C, Fortran, and Python matrix-multiplication implementations, each with an intentional bug.
Which compiler flags should I use while debugging?
Edit make.def and set CFLAGS = -O0 -g -fsanitize=address. You disable optimization, add debug symbols, and enable AddressSanitizer with these flags.
How do I compare performance between unoptimized and optimized builds?
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.
What should I check before moving from debugging to profiling?
Confirm that the program finishes without crashes or AddressSanitizer errors. Resolve any reported issues before profiling so that faults don’t distort your measurements.
Next