Home

Awesome

<div align="center"> <img width="390px" src="https://raw.githubusercontent.com/JuliaPerf/LIKWID.jl/main/docs/src/assets/logo_with_txt_white_border.png"> </div> <br> <!-- ![Lifecycle](https://img.shields.io/badge/lifecycle-maturing-blue.svg) ![Lifecycle](https://img.shields.io/badge/lifecycle-stable-green.svg) ![Lifecycle](https://img.shields.io/badge/lifecycle-retired-orange.svg) ![Lifecycle](https://img.shields.io/badge/lifecycle-archived-red.svg) ![Lifecycle](https://img.shields.io/badge/lifecycle-dormant-blue.svg) ![Lifecycle](https://img.shields.io/badge/lifecycle-experimental-orange.svg) -->
DocumentationBuild StatusQuality

Like I Knew What I am Doing

LIKWID.jl is a Julia wrapper for the performance monitoring and benchmarking suite LIKWID.

Video

Talk (25 min) given at JuliaCon 2022.

Installation

Prerequisites:

LIKWID.jl is a registered Julia package. Hence, you can simply add it to your Julia environment with the command

] add LIKWID

Make sure that LD_LIBRARY_PATH includes the directory that contains the liblikwid library (/usr/local/lib by default). You can check via

echo $LD_LIBRARY_PATH

If it doesn't, put the following into your ~/.bashrc:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Note that if you are using VSCode a restart might be required to see the changes.

Documentation

Please check out the documentation to learn how to use LIKWID.jl.

Example: Performance Monitoring

using LIKWID

N = 10_000
a = 3.141
x = rand(N)
y = rand(N)
z = zeros(N)

function daxpy!(z, a, x, y)
    z .= a .* x .+ y
end
daxpy!(z, a, x, y); # warmup

metrics, events = @perfmon "FLOPS_DP" daxpy!(z, a, x, y); # double-precision floating point ops.

Output:

Group: FLOPS_DP
┌───────────────────────────┬──────────┐
│                     Event │ Thread 1 │
├───────────────────────────┼──────────┤
│          ACTUAL_CPU_CLOCK │  73956.0 │
│             MAX_CPU_CLOCK │  51548.0 │
│      RETIRED_INSTRUCTIONS │  10357.0 │
│       CPU_CLOCKS_UNHALTED │  23174.0 │
│ RETIRED_SSE_AVX_FLOPS_ALL │  20000.0 │
│                     MERGE │      0.0 │
└───────────────────────────┴──────────┘
┌──────────────────────┬────────────┐
│               Metric │   Thread 1 │
├──────────────────────┼────────────┤
│  Runtime (RDTSC) [s] │ 7.68048e-6 │
│ Runtime unhalted [s] │  3.0188e-5 │
│          Clock [MHz] │     3514.8 │
│                  CPI │    2.23752 │
│         DP [MFLOP/s] │     2604.0 │
└──────────────────────┴────────────┘

Resources

Creators

LIKWID.jl is an effort by the Paderborn Center for Parallel Computing (PC²) and, originally, the MIT JuliaLab.