Skip to main content
QUICK REVIEW

[論文レビュー] LIKWID: Lightweight Performance Tools

Jan Treibig, Georg Hager|Apr 26, 2011
Parallel Computing and Optimization Techniques被引用数 205
ひとこと要約

LIKWID は、x86 マルチコアおよびマルチスレッドシステムにおけるパフォーマンス最適化のための軽量でオープンソースのコマンドラインツールキットです。トポロジーの特定、スレッド-コアアフィニティ制御、パフォーマンスカウンター計測、マイクロベンチマークのためのツールを備え、カーネルパッチなしで最小限のオーバーヘッドで NUMA 効果やキャッシュローカリティの問題に対処することで、アプリケーションのパフォーマンスを顕著に向上させます。

ABSTRACT

Exploiting the performance of today's microprocessors requires intimate knowledge of the microarchitecture as well as an awareness of the ever-growing complexity in thread and cache topology. LIKWID is a set of command line utilities that addresses four key problems: Probing the thread and cache topology of a shared-memory node, enforcing thread-core affinity on a program, measuring performance counter metrics, and microbenchmarking for reliable upper performance bounds. Moreover, it includes a mpirun wrapper allowing for portable thread-core affinity in MPI and hybrid MPI/threaded applications. To demonstrate the capabilities of the tool set we show the influence of thread affinity on performance using the well-known OpenMP STREAM triad benchmark, use hardware counter tools to study the performance of a stencil code, and finally show how to detect bandwidth problems on ccNUMA-based compute nodes.

研究の動機と目的

  • 科学的アプリケーションの効果的なパフォーマンスチューニングを妨げる現代のマルチコア、マルチソケット、ccNUMA アーキテクチャの複雑さに対処すること。
  • Intel VTune や OProfile のような複雑なパフォーマンスツールとは異なり、深い専門知識とシステムレベルの設定を必要とする代替手段を、簡単でアクセス可能でポータブルな形で提供すること。
  • ソースコードの変更なしに、異なるコンパイラや MPI ライブラリと互換性を持つコマンドラインツールを用いて、開発者がアプリケーションのパフォーマンスを最適化できるようにすること。
  • 低レベルのトポロジーとパフォーマンスメトリクスを公開することで、特にキャッシュとメモリ階層を効率的に活用するためのハードウェアリソースの最適利用を可能にすること。
  • アプリケーションパフォーマンスの上限を確立し、メモリ帯域幅制限などのボトルネックを特定するため、信頼性の高いパフォーマンス計測とマイクロベンチマークを促進すること。

提案手法

  • 物理的トポロジーを抽象化するための論理的リソース番号割り当て方式(例:S0:0, C1, M2)を用い、コア、キャッシュ、ソケット、NUMA ドメインを一貫して指定可能にします。
  • 直接 MSR アクセスによりハードウェアパフォーマンスカウンターを活用し、カーネルのオーバーヘッドなしに CPI、メモリ帯域幅、リモートメモリアクセスレートなどのイベントを計測します。
  • likwid-pin および likwid-mpirun を用いたラッパー方式によるスレッド-コアピン留めを採用し、コード変更なしに外部からスレッド配置を制御可能にします。
  • 既存のプログラミングモデル(OpenMP、MPI、ハイブリッド MPI+スレッド)と統合され、ユーザーレベルおよびシステムレベルのパフォーマンス監視を両方サポートします。
  • likwid-bench を用いて、スレッドおよびメモリ配置を制御したアセンブリレベルのカーネルの迅速プロトタイピングを行い、低レベルのパフォーマンス特性を計測します。
  • MEM や NUMA などの事前定義済みイベントグループをサポートすることで、パフォーマンスメトリクスの抽出を簡素化し、リモートメモリアクセスや帯域幅の飽和といった問題の検出を可能にします。

実験結果

リサーチクエスチョン

  • RQ1アプリケーション開発者は、複雑なマルチコアおよびマルチソケット x86 システムのスレッドおよびキャッシュトポロジーを効率的に調査・理解するにはどうすればよいですか?
  • RQ2スレッド-コアアフィニティは、特にメモリ制限のワークロードにおいて、共有メモリアプリケーションのパフォーマンスにどの程度向上効果をもたらしますか?
  • RQ3ハードウェアパフォーマンスカウンターを効果的に活用すれば、マルチスレッドアプリケーションにおける NUMA 関連のパフォーマンスボトルネックをどのように特定・定量できますか?
  • RQ4メモリ配置戦略(例:ファーストトゥッチ vs. インタリーブ)が、メモリ帯域幅および全体のアプリケーションパフォーマンスに与える影響はどのようなものですか?
  • RQ5カーネルの修正なしで深い専門知識を要しない軽量で使いやすいツールセットは、科学的コンピューティングユーザーがパフォーマンス最適化の障壁を低下させることができるでしょうか?

主な発見

  • likwid-pin を用いてスレッドを特定のコアにバインドしたところ、STREAM トライアドベンチマークの実行時間が 4.72 秒から 0.139 秒に短縮され、適切なスレッドアフィニティのパフォーマンスへの影響が明確に示されました。
  • メモリコピーベンチマークでは、データが 1 つの NUMA ドメインに初期化された場合、リモートメモリ帯域幅は 6.9 GB/s に達しましたが、両ソケットにわたる適切なファーストトゥッチ配置により、有効な帯域幅は 23.15 GB/s に向上しました。
  • likwid-pin を用いたメモリのインタリーブ配置では 13.8 GB/s の帯域幅が達成され、単一ドメイン配置よりも顕著にパフォーマンスが向上しましたが、最適なファーストトゥッチ配置には及ばない結果となりました。
  • パフォーマンスカウンター計測により、データがリモート NUMA ノード上に存在する場合、1 つのソケットで 6878.78 MB/s のリモートメモリ帯域幅が発生していることが明らかになりました。これは非ローカルメモリアクセスのコストを示しています。
  • likwid-perfctr の MEM および NUMA パフォーマンスグループにより、NUMA の非効率性が検出可能であり、リモート読み取りおよび書き込み帯域幅メトリクスが非ローカルメモリアクセスに起因するパフォーマンス劣化を明確に示しました。
  • ツールセットは、カーネルパッチを必要とせず、最小限の設定オーバーヘッドで、さまざまな x86 アーキテクチャおよび MPI 実装間で高いポータビリティと使いやすさを達成しました。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。