Hardware-Level Performance Monitoring in Julia
DescriptionJulia is a dynamic programming language that combines two features important for high-productivity scientific computing: interactivity and high performance. These features enable the interactive development of scientific application codes for HPC systems. However, to efficiently utilize the resources of HPC clusters, it is essential to gain a thorough understanding of the performance of the critical computational kernels on the available hardware. While many HPC performance tools have been developed over time, they typically target static programming languages and either do not support Julia at all or do not exploit the potential of Julia's dynamic nature. In my talk, I will present LIKWID.jl, a Julia interface to the eponymous performance benchmarking suite, which has been developed within the German National High-Performance Computing Alliance (NHR) to tackle this issue for intra-node performance analyses. In particular, LIKWID.jl enables interactive monitoring of the performance of a computational kernel on the hardware level by examining hardware performance counters built into CPUs (and GPUs). I will demonstrate how to use LIKWID.jl's Marker API to analyze specific sections of larger scientific codes and gain important insights into floating-point performance, vectorization, and data transfer. I will showcase these techniques using some illustrative examples inspired by real-world applications.
TimeWednesday, June 2812:30 - 13:00 CEST
Computer Science, Machine Learning, and Applied Mathematics