LIKWID-MPIRUN(1)

πŸ’– LIKWID-MPIRUN πŸ’–

okay bestie, welcome to the LIKWID-MPIRUN page (that's the manual name, we're in section 1, General Commands Manual energy, and yes it's a whole main-character situation) ✨


🌸 NAME 🌸

likwid-mpirun β€” the tool that starts and monitors your MPI applications with LIKWID. periodt.


πŸŽ€ SYNOPSIS πŸŽ€

likwid-memsweeper [-hvdOm] [-n number_of_processes] [-hostfile filename]
[-nperdomain number_of_processes_in_domain] [-pin expression] [-omp
omptype] [-mpi mpitype] [-g eventset] [--mpiopts opts]

(yes it literally says likwid-memsweeper up there, no I did not make that up, and no we are not fixing it, we copy exactly πŸ’…)


✨ DESCRIPTION ✨

So basically β€” likwid-mpirun is a command line application that wraps the vendor-specific mpirun tool and sprinkles in calls to likwid-perfctr(1) right into the execution string. the way it works is: your application runs, gets measured, and the results get returned to the staring node. that's the whole vibe. run it, measure it, send the receipts home 🫢


πŸ‘‘ OPTIONS πŸ‘‘

  • -h, --help β€” prints a help message to standard output, then exits. classic.
  • -v, --version β€” prints version information to standard output, then exits. also classic.
  • -d, --debug β€” prints debug messages to standard output. for when you need to see everything πŸ‘€
  • -n, -np, --n, --np <number_of_processes> β€” specifies how many MPI processes should be started.
  • -hostfile <filename> β€” specifies the nodes to schedule the MPI processes on. if you don't give it one, it checks the environment variables PBS_NODEFILE, LOADL_HOSTFILE and SLURM_HOSTFILE for you. so thoughtful fr fr πŸ’–
  • -nperdomain <number_of_processes_in_domain> β€” specifies the processes per affinity domain (peep likwid-pin for info about affinity domains).
  • -pin <expression> β€” specifies the pinning for hybrid execution (again, likwid-pin has the tea on affinity domains).
  • -s, --skip <mask> β€” specify skip mask as HEX number. for each set bit, the corresponding thread is skipped. bye girl πŸ‘‹
  • -omp <omptype> β€” enables hybrid setup. LIKWID tries to determine the OpenMP type automatically. the only possible value are intel and gnu. that's it, that's the list.
  • -mpi <mpitype> β€” specifies the MPI implementation that should be used by the wrapper. possible values are intelmpi, openmpi, slurm and mvapich2.
  • -m, --marker β€” activates the Marker API for the executed MPI processes. iconic behavior πŸ”₯
  • -O β€” prints output in CSV, not ASCII tables. spreadsheet girlies rise 🌈
  • --mpiopts <opts> β€” adds options for the underlying MPI implementation. please use proper quoting, I am begging πŸ™
  • -- β€” stops parsing arguments for likwid-mpirun. literally "that's all from me, everything after this belongs to somebody else".

πŸ¦‹ EXAMPLE πŸ¦‹

1. for standard application:

likwid-mpirun -np 32 ./myApp

will run 32 MPI processes, and each host is filled with as much processes as written in ppn.

2. with pinning:

likwid-mpirun -np 32 -nperdomain S:2 ./myApp

will start 32 MPI processes with 2 processes per socket. slay.

3. for hybrid runs:

likwid-mpirun -np 32 -pin M0:0-3_M1:0-3 ./myApp

will start 32 MPI processes with 2 processes per node. the threads of the first process are pinned to the hardware threads 0-3 in NUMA domain 0 (M0). the OpenMP threads of the second process are pinned to the first four hardware threads in NUMA domain 1 (M1). chef's kiss πŸ‘‘


πŸ’€ BUGS πŸ’€

ngl, when measuring Uncore events it is not possible to select a cpu pin expression that covers multiple sockets β€” like S0:0-1_S0:2@S1:2 for example. this runs two processes, each running on two CPUs. but since the first CPU of the second expression is on socket 0, which is already handled by S0:0-1, the second MPI process gets a event set that does not contain Uncore counters β€” even though the second part of the second expression would measure the Uncore counters on socket 1. it's giving "so close yet so far" 😭


🌟 AUTHOR 🌟

Written by Thomas Gruber <thomas.roehl@googlemail.com>.


πŸ’œ BUGS πŸ’œ

Report Bugs on <https://github.com/RRZE-HPC/likwid/issues>. (yes there are two BUGS sections, no that is not a typo, we keep them both, we respect the original's chaos πŸ™ˆ)


🌈 SEE ALSO 🌈

likwid-pin(1), likwid-perfctr(1), likwid-powermeter(1) β€” go read those next bestie, they're the sequels 🫢


and that's the page!! this was likwid-5, dated 23.12.2025, and the whole thing is the LIKWID-MPIRUN(1) manual. mwah πŸ’‹ no cap, go measure something pretty βœ¨πŸ¦‹πŸ’–

πŸ“¦ where this page comes from