Table of Contents

LIKWID

LIKWID - "Like I Knew What I'm Doing"

LIKWID is developed by FAU for Performance Optimization, Modeling, and Architecture Analysis * Bringing the thinking back to the performance engineer. * Open-source * Command-line and Software Lib interface. No GUI * x86 Architecture (Intel & AMD) with initial support for Nvidia GPUs

Quick Start in SCC

LIKIWID Toolset is available in SCC as a module, thus before using LIKWID a user need to load their preferred LIKWID version module to set the environment correctly.

(base) gwdu101:25 17:17:18 ~ > module show likwid
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  /opt/sw/modules/21.12/cascadelake/Core/likwid/5.2.0.lua:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
...

(base) gwdu101:25 17:17:24 ~ > 
(base) gwdu101:25 17:18:33 ~ > module load likwid
(base) gwdu101:25 17:18:43 ~ >

The following tasks can be performed by LIKWID:

Node architecture information

$ likwid-topology
$ likwid-powermeter

Examples of node-architecture for SCC's amp016:

Affinity control and data placement

$ likwid-pin
$ likwid-mpirun

Query and alter system settings

$ likwid-features
$ likwid-setFrequencies

Application performance profiling (perf-counter)

* Using the available hardware counters to measure events that characterises the interaction between software and hardware * Uses a light-weight marker API for code instrumentation

$ likwid-perfctr

Micro-benchmarking - Application and framework to enable:

$ likwid-bench
$ likwid-memsweeper

likwid-topology

likwid-pin

likwid-perfctr

Performance Groups

Examples of using “likwid-perfctr” on SCC's amp016 node

Marker API

    LIKWID_MARKER_INIT //global initialization
    LIKWID_MARKER_THREADINIT //individual thread initialization
    LIKWID_MARKER_START('compute') //Start a code region named 'compute'
    LIKWID_MARKER_STOP('compute') //Stop the code region named 'compute'
    LIWKID_MARKER_SWITCH //Switches perfromance group or event set in a round-robin fashion
    LIKWID_MARKER_CLOSE //global finalization
    

Additional information