Skip to content
Thomas Gruber edited this page Nov 1, 2023 · 34 revisions

Download

FTP server of University Erlangen-Nuremberg

Release page at GitHub

Motivation

This is an effort to develop easy to use but yet powerful performance tools and library for the GNU Linux operating system. While the focus of LIKWID was originally on x86 processors, LIKWID supports x86, ARM and POWER CPUs as well as Nvidia co-processors. LIKWID follows the philosophy:

  • Simple
  • Efficient
  • Portable
  • Extensible

LIKWID includes the following tools:

  • likwid-topology : A tool to display the thread and cache topology on multicore/multisocket computers
  • likwid-perfctr : A tool to measure hardware performance counters on recent Intel and AMD processors. It can be used as wrapper application without modifying the profiled code or with a marker API to measure only parts of the code. An introduction can be found in here.
  • likwid-pin : A tool to pin your threaded application without changing your code. Works for pthreads and OpenMP.
  • likwid-bench : Benchmarking framework allowing rapid prototyping of threaded assembly kernels
  • likwid-mpirun : Script enabling simple and flexible pinning of MPI and MPI/threaded hybrid applications. With integrated likwid-perfctr support.
  • likwid-powermeter : Tool for accessing RAPL counters and query Turbo mode steps on Intel processor. RAPL counters are also available in likwid-perfctr.
  • likwid-memsweeper : Tool to cleanup ccNUMA domains and last level caches.
  • likwid-setFrequencies : Tool to set the clock frequency of hardware threads.
  • likwid-agent : Monitoring agent for LIKWID with multiple output backends.
  • likwid-genTopoCfg : Config file writer that saves system topology to file for faster startup.
  • likwid-perfscope : Tool to perform live plotting of performance data using gnuplot.

Getting started guide can be found here. There was a BOF session on LIKWID at the ISC 13 conference. We started a Youtube channel with video tutorials.

Most users of LIKWID that want to measure just a region of their code, like to use LIKWID's MarkerAPI. The MarkerAPI is a set of macros/functions that can be embedded in the code and turned on and off at compile time. In contrast to other tools that support measuring regions of code, the MarkerAPI just specifies where to measure but not what to measure. The configuration is done from the outside by using LIKWID's likwid-perfctr or by setting the appropriate environment variables. Moreover, all functionality provided by the command line tools, can be acccessed within your own C/C++ code by using LikwidAPI. If you are not sure which API is suitable for your needs, see this page.

Papers you may find useful while using LIKWID:

A demo for a root exploit involving the MSR device files was published. As a consequence the security settings for access to the MSR device files are tightened in recent kernels. It is not able to exploit this vulnerability with LIKWID!

Just setting the file access rights or using suid root on the access daemon is not sufficient anymore. You have to register your binary now to get access.

This is done by calling

sudo setcap cap_sys_rawio+ep EXECUTABLE

on the executables. This is only possible on local file systems.

Wiki Overview

  • How to Build and install LIKWID.
  • Known Issues for latest stable release
  • The Changelog of the current release
  • Be involved in the development of LIKWID on the Ideapad.

Video

LIKWID playlist (Youtube)

LIKWID SC16 video

Acknowledgement

If you use LIKWID for scientific work you can cite us through Zenodo: https://zenodo.org/doi/10.5281/zenodo.4275676 . There are individual DOIs for each LIKWID release.

The initial paper introducing LIKWID: J. Treibig, G. Hager and G. Wellein: LIKWID: A lightweight performance-oriented tool suite for x86 multicore environments. Proceedings of PSTI2010, the First International Workshop on Parallel Software Tools and Tool Infrastructures, San Diego CA, September 13, 2010. DOI: 10.1109/ICPPW.2010.38 Preprint: http://arxiv.org/abs/1004.4431

Bibtex:

@inproceedings{psti,
author               = {Treibig, J. and Hager, G. and Wellein, G.},
booktitle            = {Proceedings of PSTI2010, the First International Workshop on Parallel Software Tools and Tool Infrastructures},
title                = {LIKWID: A lightweight performance-oriented tool suite for x86 multicore environments},
year                 = {2010},
address = {San Diego CA},
}

Moreover, we did some tests regarding the overhead of LIKWID and other performance monitoring interfaces:

Roehl, T.; Treibig, J.; Hager, G.; Wellein, G.: "Overhead Analysis of Performance Counter Measurements," 43rd International Conference on Parallel Processing Workshops (ICCPW), 2014, pp.176,185, 9-12 Sept. 2014, DOI: 10.1109/ICPPW.2014.34 URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7103452&isnumber=7103416

Bibtex:

@inproceedings{7103452,
author={Roehl, T. and Treibig, J. and Hager, G. and Wellein, G.},
booktitle={43rd International Conference on Parallel Processing Workshops (ICCPW)},
title={Overhead Analysis of Performance Counter Measurements},
year={2014},
month={Sept},
pages={176-185},
doi={10.1109/ICPPW.2014.34},
ISSN={1530-2016},
}

Funding

Likwid development was funded by BMBF Germany under the FEPA project, grant 01IH13009, and the SeASiTe project, grant 01IH16012C.

BMBF logo
Clone this wiki locally