Skip to main content
QUICK REVIEW

[論文レビュー] LIKWID: A lightweight performance-oriented tool suite for x86 multicore environments

Jan Treibig, Georg Hager|arXiv (Cornell University)|Apr 26, 2010
Parallel Computing and Optimization Techniques参考文献 6被引用数 28
ひとこと要約

LIKWID は、x86 マルチコアシステムにおけるパフォーランス最適化のための軽量でオープンソースのコマンドラインツールセットであり、トポロジーの自動発見、スレッド-コアアフィニティ制御、ハードウェアパフォーマンスカウンタの測定、ハードウェアプリリエーブャ管理を提供する。カーネルパッチや複雑な設定を必要とせず、HPCアプリケーションの効率的なパフォーランス分析とチューニングを可能にする。ストレージと STREAM ベンチマークにおけるメモリアクセスパターンの改善とパフォーランス向上を実証した。

ABSTRACT

Exploiting the performance of today's processors 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 toggling hardware prefetchers. An API for using the performance counting features from user code is also included. We clearly state the differences to the widely used PAPI interface. To demonstrate the capabilities of the tool set we show the influence of thread pinning on performance using the well-known OpenMP STREAM triad benchmark, and use the affinity and hardware counter tools to study the performance of a stencil code specifically optimized to utilize shared caches on multicore chips.

研究の動機と目的

  • スレッドおよびキャッシュトポロジーがアプリケーションパフォーランスに顕著に影響を与える現代のマルチコア x86 アーキテクチャの複雑さに対処すること。
  • Intel VTune や PAPI のような複雑なパフォーランステールツールの代替として、低レベルのハードウェア詳細に不慣れな科学者ユーザー向けのシンプルでアクセスしやすいツールを提供すること。
  • カーネルの変更や広範な設定を必要とせず、正確なパフォーランス測定と最適化を可能にすること。
  • スレッド-コアアフィニティ、ハードウェアカウンタ監視、プリフェッチャ制御を通じて、共有メモリ環境におけるリソースの効率的利用を支援すること。
  • ハイブリッドな MPI+OpenMP コードを含む、多様な x86 マルチコアおよびマルチソケットシステム間でのパフォーマンスの移植性とチューニングを促進すること。

提案手法

  • カーネルモジュールを必要とせず、MSRCER およびモデル特有レジスタ(MSRs)を直接使用してハードウェアパフォーマンスカウンタにアクセスし、低オーバーヘッドのメトリクス収集を実現する。
  • モジュラーなコマンドラインツールセットを採用:likwid-topology はハードウェアトポロジーの発見、likwid-pin はスレッド-コアアフィニティのバインド、likwid-perfCtr はパフォーランスカウンタの測定、likwid-features はハードウェアプリリーチャ制御を担当する。
  • カウンタのマルチプレクシングをサポートし、利用可能なハードウェアカウンタ数を超えるイベント測定を可能にし、包括的なパフォーランス分析を実現する。
  • POSIX スレッドおよび MPI+スレッドモデルと統合可能であり、ソースコードの変更なしに外部からスレッドピン留めを実行できる。
  • 一般的なパフォーランスメトリクス(例:メモリ帯域幅、FLOP数)のための事前定義済みイベントセットを提供し、専門外のユーザーにとっての使用を簡素化する。
  • 軽量な API を提供し、ユーザーアプリケーション内の任意のコードポイントでパフォーランスカウンタ測定を可能にする。

実験結果

リサーチクエスチョン

  • RQ1複雑な x86 マルチコアシステムをターゲットとする科学者ユーザーが、ハードウェアの詳細に深く踏み込まずに、パフォーランスチューニングをどのように簡素化できるか?
  • RQ2共有メモリアプリケーション(例:STREAM トリアドおよびステンシルコード)において、スレッド-コアアフィニティがパフォーランスに与える影響はどの程度か?
  • RQ3重量級な代替手段と比較して、軽量でユーザースペースのツールによるハードウェアパフォーマンスカウンタ測定は、どの程度有効か?
  • RQ4ネハレム EP プロセッサ上で 7 ポイントステンシル ジャコビソルバーに非一時的ストアと一時的ブロッキングを使用した場合のパフォーマンスへの影響は?
  • RQ5統合的で最小限のツールセットは、キャッシュ階層やメモリ帯域幅といったマルチコアシステムの主要なパフォーマンスボトルネックを効果的に解決できるか?

主な発見

  • likwid-pin を用いたスレッドピン留めにより、STREAM トリアドベンチマークのパフォーランスが著しく向上し、コア間のキャッシュおよびメモリ競合が低減された。
  • 7 ポイントステンシル ジャコビカーネルにおける非一時的ストアの使用により、一時的ストアと比較してデータ転送量が約 1/3 減少し、合計メモリトラフィックが 75.39 GB から 43.97 GB に低下した。
  • 一時的ブロッキングをさらに適用することで、メモリトラフィックは 16.57 GB(標準的なスレッド化バージョン比で 4.5 倍の削減)にまで低下し、効果的なキャッシュ再利用が実証された。
  • メモリトラフィックが 4.5 倍削減されたにもかかわらず、パフォーランスは 784 MLUPS から 1331 MLUPS に向上(69% の向上)した。これは、ネハレム EP においてメモリ帯域幅の飽和がパフォーマンス向上の制限要因であることを示している。
  • ネハレム EP では、飽和したメモリ帯域幅と L3 帯域幅の間のパフォーランス差が小さいため、データ移動量が減少しても一時的ブロッキングの恩恵は限定的である。
  • このツールセットは、カーネルパッチを必要とせず、正確で低オーバーヘッドのパフォーランス測定とトポロジーに配慮した最適化を可能にし、x86 システム上の HPC ワークロードに適している。

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

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

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

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