# LIKWID
LIKWID(“Like I Knew What I’m Doing”)は、[[Jan Treibig]]・[[Georg Hager]]・[[Gerhard Wellein]](Erlangen Regional Computing Center, [[Friedrich-Alexander-Universität Erlangen-Nürnberg]])が開発した、x86マルチコア・マルチソケットLinux環境向けの軽量なコマンドラインツール群。カーネルパッチや追加のカーネルモジュールを要さず、Linux 2.6カーネルの`msr`モジュールのみに依存する点を特色とする。GPL2で公開されたオープンソースソフトウェアである(2010年当時 http://code.google.com/p/likwid/ )。
4つの中核ツールから構成される:
- **likwid-topology**: 共有メモリノードのハードウェアスレッド・キャッシュトポロジを`cpuid`から探索し、テキスト・ASCIIアートで可読に出力する。
- **likwid-pin**: `pthread_create`のオーバーロードにより、コード変更なしでスレッド-コアアフィニティを外側から強制するツール。
- **likwid-perfCtr**: Linuxの`msr`モジュール経由でハードウェア性能カウンタを計測するツール。ラッパーモードとマーカーAPIモードを持ち、event countは厳密にcore-baseで定義される。
- **likwid-features**: Intel x86プロセッサのハードウェアプリフェッチユニット等、切替可能なプロセッサ機能の状態を表示・変更する。
論文([[@2010__ICPPW__LIKWID : A Lightweight Performance-Oriented Tool Suite for x86 Multicore Environments]])は[[PAPI]]との比較で、インストールの単純さ・低依存性を強みとする一方、対応プラットフォームがLinux上のx86系プロセッサに限定される点をトレードオフとして述べている。2010年執筆時点ではアルファ版段階であった。
[[ハードウェアトポロジ抽象化]]の可視化手法([[@2018__TVCG__MemAxes - Visualization and Analytics for Characterizing Complex Memory Performance Behaviors]]が水平icicle plotとして参照)にも likwid-topology の出力形式が引用されている。