Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
en:services:application_services:high_performance_computing:performance_engineering_and_analysis:likwid [2022/10/27 14:17] – jogaja | en:services:application_services:high_performance_computing:performance_engineering_and_analysis:likwid [2022/10/27 15:23] (current) – jogaja | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ==== LIKWID ==== | ||
+ | === LIKWID - "Like I Knew What I'm Doing" === | ||
+ | LIKWID is developed by FAU for Performance Optimization, | ||
+ | * 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 | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
+ | / | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
+ | ... | ||
+ | |||
+ | (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: === | ||
+ | * Quantify sustainable performance limits | ||
+ | * Separate influences considering isolated instruction code snippets | ||
+ | * Reverse-egineer processor features | ||
+ | * Discover hardware bugs | ||
+ | < | ||
+ | $ likwid-bench | ||
+ | $ likwid-memsweeper | ||
+ | </ | ||
+ | |||
+ | === likwid-topology === | ||
+ | * Thread topology: How processor IDs map on physical compute resources | ||
+ | * Cache topology: How processors share the cache hierarchy | ||
+ | * Cache properties: Detailed information about all cache levels | ||
+ | * NUMA topology: NUMA domains and memory sizes | ||
+ | * GPU topology: GPU information | ||
+ | |||
+ | === likwid-pin === | ||
+ | * Explicitly supports pthread and the OpenMP implementations of Intel and GNU gcc | ||
+ | * Only used with " | ||
+ | |||
+ | === likwid-perfctr === | ||
+ | * a lightweight command-line application to configure and read out hardware performance data | ||
+ | * Can be used as a wrapper (no modification in the application) or by adding " | ||
+ | * There are preconfigured performance groups with useful event sets and derived metrics | ||
+ | * Since ***likwid-perfctr*** measures all events on the specified CPUs, it is necessary for processes and threads to dedicated resources. | ||
+ | * This can be done by pinning the application manually or using the built-in functionality | ||
+ | |||
+ | === Performance Groups === | ||
+ | |||
+ | * An outstanding feature of LIKWID | ||
+ | * Organizes and combines micro-architecture events and counters with e.g. run-time and clock speed | ||
+ | * Provides a set of derived metrics for efficient analysis | ||
+ | * They are read on the fly without compilation by command-line selection | ||
+ | * Are found in the path " | ||
+ | |||
+ | Examples of using " | ||
+ | * Use option " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | * Use " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | * Use " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | * Use " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === Marker API === | ||
+ | * Enables measurements of user-defined code regions. | ||
+ | * The Marker API offers 6 functions (for C/C++) to measure named regions | ||
+ | * Activated by " | ||
+ | < | ||
+ | LIKWID_MARKER_INIT //global initialization | ||
+ | LIKWID_MARKER_THREADINIT // | ||
+ | LIKWID_MARKER_START(' | ||
+ | LIKWID_MARKER_STOP(' | ||
+ | LIWKID_MARKER_SWITCH //Switches perfromance group or event set in a round-robin fashion | ||
+ | LIKWID_MARKER_CLOSE //global finalization | ||
+ | </ | ||
+ | | ||
+ | ==== Additional information ==== | ||
+ | * [LIKWID](https:// | ||
+ |