Skip to content

Instructions for using LIKWID Tools

LIKWID Tools ("Like I Knew What I'm Doing") is command line performance tool, easy to use and supports variety of processor architectures such as x86 (Intel/AMD), ARM and POWER[8-9], as well NVIDIA GPUs. Read more


LIKWID is free and open-source software, GPL General Public License v3.0


LIKWID is available on HPC Vega, through module.

$ module load likwid/<version>

LIKWID commands

For additional information about LIKWID commands, check the help section.

$ likwid-<command> -h

Using LIKWID Tools


Tool to display processors threads and cache topology.

$ likwid-topology

E.g. Login node

CPU name:       AMD EPYC 7452 32-Core Processor                
CPU type:       AMD K17 (Zen2) architecture
CPU stepping:   0
Hardware Thread Topology
Sockets:                2
Cores per socket:       32
Threads per core:       1

To display more information regarding cache add switch -c.

Read more about likwid-topology.


LIKWID tool for for pinning on threads or thread groups (e.g. node N, socket S#, cache group C#, memory domain M# or cpuset) inside system topology, without changing the code or application. For OpenMP applications, we setup environment variable OMP_NUM_THREADS (e.g. SBATCH), therefor likwid-pin will setup threads as you specify it.

Available thread domains can be checked with switch -p (e.g. S0 and S1 are two sockets).

likwid-pin -p

Example with pinning threads if user doesn't specify number of threads likwid-pin will use -c N:0-maximumNuberOfProcessors.

$ likwid-pin -c 0,3-5,6 ./application
$ likwid-pin -c S0:0-1,64-65 ./application

Read more about likwid-pin.


Enables pinning of MPI and MPI/Hybrid applications.

MPI example without any pinning:

$ likwid-mpirun -np 4 ./application

Additional switch -omp should be used for OpenMP:

$ likwid-mpirun -np 4 -omp 2 ./application

For pinning add switch -nperdomain or ˙-pin˙ (e.g. node, socket, cache or NUMA domains):

$ likwid-mpirun -np 16 -nperdomain M:0 ./application
$ likwid-mpirun -np 16 -pin S0:0-1,64-65 ./application
$ likwid-mpirun -np 16 -pin S0:0-1,64-65_S1:32-33,98 ./mpibench 

Debug mode:

$ likwid-mpirun -debug -np 16 ./application

Read more about likwid-mpirun.


Tool for live plotting of performance, additional module should be loaded e.g. module load gnuplot.

List predefined plots (e.g. FLOPS_DP/SP, MEM, L2, L3, NUMA, TEMP ...):

$ likwid-perfscope -a


$ likwid-perfscope -C S0:0 -g L2_BAND -t 300ms ./output

Read more about likwid-perfctr.


Tool to measure hardware performance (eg. FLOPS_DP/SP, MEM, L2, L3, NUMA, CACHE,..). Threading must be enabled, while compiling your application (OpenMP).

List prepared groups:

$ likwid-perfctr -a


$ likwid-perfctr  -C S0:0-3  -g BRANCH  -t 300ms ./output

Read more about likwid-perfctr.


Benchmarking framework.

List availiable benchmarks.

$ likwid-bench -a

List thread domains:

$ likwid-bench -p

Chose type of benchmark (-p), specify domain and input for benchmark (e.g. ::).

$ likwid-bench  -t copy -w S0:100kB:1

Read more about likwid-bench.