LIKWID Performance Tools

LIKWID Performance Tools


LIKWID stands for “Like I Knew What I’m Doing.” It is an easy to use yet powerful command line performance tool suite for the GNU/Linux operating system. While  LIKWID supported only x86 processors at the beginning, it has been ported to ARM (including Fujitsu A64FX)  and POWER8/9 architectures as well as to NVIDIA  and AMD GPGPUs. Some of its tools are even architecture agnostic.

The LIKWID tools are used world-wide for teaching purposes or in production environments like NERSC at Lawrence Berkeley National Labratory, CSCS (Swiss National Supercomputing Center) in Lugano, the National Super Computer Center in Guangzhou, the Vienna Scientific Cluster (VSC) or the Barcelona Supercomputing Center (BSC). Moreover, LIKWID is used by the Gauss Center for Supercomputing, LRZ (Garching), HLRS (Stuttgart) and JSC (Jülich) as well as the IT provider for the Max Planck Society (MPCDF). Some of the Tier2/3 HPC centers in Germany using LIKWID are RWTH Aachen, TU Dresden, KIT Karlsruhe, University of Paderborn, University of Konstanz, University of Gießen, and the national research center DESY in Hamburg. Dr. Hatem Ltaief from Extreme Computing Research Center (KAUST) says “LIKWID rocks!”. We thank the LANL HPC ENV team to test and use LIKWID on the Darwin cluster(*). It is installed at ORNL on some smaller clusters. Some vendor folks at Dell reported their application of LIKWID as well.

The released versions are downloaded about 100 times each day from our FTP (statistics).

LIKWID tries to be as simple to install and use as possible, so we go without fancy GUIs and scary library dependencies. It includes the following tools (click on the links for documentation):

  • likwid-topology : Display the thread and cache topology on multicore/multisocket computers
  • likwid-perfctr : Count hardware performance events. It can be used as wrapper application, which does not require modification of the code to be analyzed, or with a marker API, which restricts the event counting to parts of the code.
  • likwid-perfscope : Tool to perform live plotting of performance data using gnuplot.
  • likwid-pin : Pin the threads of an application without changing the code. Works for OpenMP, C++11 threads, pthreads, etc., and essentially with any threading library that builds on pthreads.
  • likwid-bench : A benchmarking framework that allows rapid prototyping of threaded assembly kernels and full control over problem sizes, data placement, affinity, etc.
  • likwid-mpirun : A wrapper script for simple and flexible pinning of MPI and MPI/threaded hybrid applications. Comes with integrated likwid-perfctr support.
  • likwid-powermeter : Access RAPL counters (for energy measurements) and query “Turbo Mode” steps on Intel processors. RAPL counters are also available in likwid-perfctr.
  • likwid-memsweeper : Sweep out the file system buffer cache in ccNUMA domains and purge last level caches.
  • likwid-setFrequencies : Set the clock frequency of CPU cores and (on Intel CPUs that support it) the Uncore.
  • likwid-genTopoCfg : Config file writer that saves system topology to file for faster startup.

 

Accurate hardware event counting on modern processors is difficult because of lacking documentation and annoying bugs (e.g., miscounting). We try to support new architectures as soon as possible and validate event counts using well-understood benchmarks. LIKWID supports most current x86 microarchitectures, including the Intel Xeon Phi and AMD Zen. Please consult the Github pages for the latest information.

LIKWID is part of the OpenHPC suite,  a reference collection of open-source HPC software components and best practices. Moreover, LIKWID and its team is part of VI-HPS, a virtual institute of about 15 academic and industry partners to develop state-of-the-art tools for high-performance computing. LIKWID is part of Debian’s software repository and consequently available in all Debian-based distributions like Ubuntu. There are also maintained packages for ArchLinux and Gentoo. Spack, a package manager for supercomputers, contains LIKWID as a mainline package. The SPEC Research Group lists LIKWID as one of “peer-reviewed tools for quantitative system evaluation and analysis”.

More information

Publications

  • T. Gruber, J. Eitzinger, G. Hager, and G. Wellein: LIKWID 5: Lightweight Performance Tools. Accepted as Research Posters for SC19, Denver, CO, November 17, 2019. Official PDF
  • T. Röhl, J. Eitzinger, G. Hager, and G. Wellein: LIKWID Monitoring Stack: A flexible framework enabling job specific performance monitoring for the masses. Accepted for the HPCMASPA 2017, the Workshop on Monitoring and Analysis for High Performance Computing Systems Plus Applications, held in conjunction with IEEE Cluster 2017, Honolulu, HI, September 5, 2017. Preprint: arXiv:1708.01476
  • T. Röhl, J. Eitzinger, G. Hager, and G. Wellein: Validation of Hardware Events for Successful Performance Pattern Identification in High Performance Computing. In: A. Knüpfer et al. (eds.), Tools for High Performance Computing 2015, Springer International Publishing, ISBN 978-3-319-39589-0 (2016), 17-28. DOI: 10.1007/978-3-319-39589-0_2
  • T. Röhl, J. Treibig, G. Hager, and G. Wellein: Overhead Analysis of Performance Counter Measurements. In: Proc. PSTI 2014, the Fifth International Workshop on Parallel Software Tools and Tool Infrastructures, Sept 11, 2014, Minneapolis, MN. DOI: 10.1109/ICPPW.2014.34
  • J. Treibig, G. Hager, and G. Wellein: likwid-bench: An Extensible Microbenchmarking Platform for x86 Multicore Compute Nodes. In: H. Brunst et al. (eds.), Tools for High Performance Computing 2011. Springer, ISBN 978-3-642-31475-9, (2012) 27-36 . DOI: 978-3-642-31475-9.
  • 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: arXiv:1004.4431

(*) Darwin is funded by the Computational Systems and Software Environments (CSSE) subprogram of LANL’s ASC program (NNSA/DOE)