Linaro Forge Logo

Linaro MAP

Profiling C, C++ and Fortran Threaded and Parallel Code Made Easy

Linaro MAP is a high-performance profiler designed to optimize the efficiency of software running on multicore processors.

linaro map icon1

Supports a wide range of programming languages, including C, C++, Fortran, and Python, and is capable of analyzing both parallel and single-threaded applications.

linaro map icon2

Quickly pinpoints performance bottlenecks down to the source line, providing in-depth analysis of pthreads, OpenMP, and MPI-based parallel and threaded code.

linaro map icon3

Promptly identifies issues related to communication and workload imbalances in multi-process codes, making it an invaluable tool for developers looking to enhance application performance and scalability in complex computing environments.

linaro map icon4

“The software developers in our group use Linaro Forge on an almost daily basis, not only for finding and fixing errors but also in order to get a more profound insight into program execution and data states.”

Dr. Aurel Neic, Postdoctoral Researcher, Institute of Biophysics Medical University of Graz


Low-overhead profiling

Profile your code without distorting application behaviour. Linaro MAP is Linaro Forge's scalable low-overhead profiler with no instrumentation or code changes required. It helps developers accelerate their code by revealing the causes of slow performance. From multicore Linux workstations to the largest supercomputers, you can profile realistic test cases with typically less than 5% runtime overhead.

Single and multi threaded profiling

Linaro MAP profiles parallel, multithreaded, and single threaded codes, providing in-depth analysis and bottleneck pinpointing to the source line. Unlike most profilers, it can profile pthreads, OpenMP or MPI for parallel and threaded code, including communication and workload imbalance issues for MPI and multi-process codes.

Wide issue coverage

Linaro MAP exposes a wide set of performance indicators, including MPI metrics, Perf counters, I/O metrics, memory usage and even your own custom metrics. Profile computation (with self, child and call tree representations over time), thread activity (to identify over-subscribed cores and sleeping threads that waste CPU time for OpenMP and pthreads), instruction types, as well as synchronization and I/O performance.