Extrae.jl: Julia bindings for the Extrae HPC Profiler
Sergio Sanchez-Ramirez, Mosè Giordano
TL;DR
Extrae.jl provides Julia bindings to the Extrae HPC profiler, enabling seamless generation of Paraver traces by mapping Julia’s MPI, OpenMP-like, and threading models to Paraver’s process and resource models. The design supports instrumentation via library interception or binary rewriting, annotation types for states, events, and communications, and optional hardware counter sampling through PAPI, with practical guidance for distributed mappings. The evaluation on a Taylor-Green vortex MPI application demonstrates how Paraver can reveal parallelism issues, bottlenecks like MPI_Waitany and MPI_Allreduce, and bandwidth dynamics, validating the approach for Julia HPC workloads. Overall, the work lowers profiling barriers for Julia users, enables cross-ecosystem analysis, and points to future integrations with other HPC tools and trace formats.
Abstract
The Julia programming language has gained acceptance within the High-Performance Computing (HPC) community due to its ability to tackle two-language problem: Julia code feels as high-level as Python but allows developers to tune it to C-level performance. But to squeeze every drop of performance, Julia needs to integrate with advanced performance analysis tools, also known as profilers. In this work, we present Extrae.jl, a Julia package to interface with the Extrae profiler.
