Skip to main content
QUICK REVIEW

[論文レビュー] FastFlow: Efficient Parallel Streaming Applications on Multi-core

Marco Aldinucci, Massimo Torquati|ArXiv.org|Sep 7, 2009
Distributed systems and fault tolerance参考文献 34被引用数 20
ひとこと要約

FastFlow は、マルチコアシステムにおける効率的な並列ストリーミングを実現する低レベルでロックフリー、フェンスフリーのプログラミングフレームワークであり、同期のオーバーヘッドを最小限に抑えるために最適化された MPMC(複数プロデューサー・複数コンシューマー)キューを採用している。スミス・ウォーターマン相同性アラインメントベンチマークにおいて、Cilk より最大 226%、TBB より 96% 高速な性能を達成しており、細粒度のストリーミングワークロードにおいて優れた効率性を示している。

ABSTRACT

Shared memory multiprocessors come back to popularity thanks to rapid spreading of commodity multi-core architectures. As ever, shared memory programs are fairly easy to write and quite hard to optimise; providing multi-core programmers with optimising tools and programming frameworks is a nowadays challenge. Few efforts have been done to support effective streaming applications on these architectures. In this paper we introduce FastFlow, a low-level programming framework based on lock-free queues explicitly designed to support high-level languages for streaming applications. We compare FastFlow with state-of-the-art programming frameworks such as Cilk, OpenMP, and Intel TBB. We experimentally demonstrate that FastFlow is always more efficient than all of them in a set of micro-benchmarks and on a real world application; the speedup edge of FastFlow over other solutions might be bold for fine grain tasks, as an example +35% on OpenMP, +226% on Cilk, +96% on TBB for the alignment of protein P01111 against UniProt DB using Smith-Waterman algorithm.

研究の動機と目的

  • 従来のフレームワークにおけるメモリフェンスやアトミック演算による共有メモリストリーミングアプリケーションの性能ボトルネックを解消すること。
  • 任意のストリーミングネットワーク(循環グラフを含む)において、効率的かつ高スルーレートな通信をサポートする低レベルのフレームワークを設計すること。
  • x86/SSE2 ベクトル化されたスミス・ウォーターマンアルゴリズムなど、従来の手作業最適化済みコードを、高性能な通信レイヤーを用いて効率的に並列化できることを実現すること。
  • FastFlow が Cilk、OpenMP、TBB や最新のフレームワークと比較して、マイクロベンチマークおよび実世界のストリーミングアプリケーションの両方で優れた性能を示すことを実証すること。
  • マルチコアアーキテクチャにおける将来の高レベルなスケルタルストリーミングフレームワークの基盤として FastFlow を位置づけること。

提案手法

  • ミューテックスやアトミック演算に起因する同期のオーバーヘッドを排除するため、ロックフリーでフェンスフリーな MPMC キューをコア通信プリミティブとして実装すること。
  • スレッド固有の識別子(TSS やライブラリ呼び出しを介して)を用いて、ストリーミングネットワーク内での効率的で低オーバーヘッドなタスクルーティングを実現すること。
  • ストリーミングパイプラインをファームパターンとして構造化する:エミッタがシーケンスペアを生成し、ワーカーがベクトル化されたスミス・ウォーターマンを用いて処理し、コレクタが結果を集約する。
  • 各並列エンティティ(エミッタ、ワーカー、コレクタ)を直接スレッドにマッピングすることで、ランタイムのオーバーヘッドを最小限に抑え、負荷分散を予測可能にする。
  • 異なるクエリサイズおよびデータベースサイズ間での性能比較を標準化するため、1秒あたりのセル更新数(CUPS)という指標を採用すること。
  • すべての実装を同一のシーケンシャルで手作業最適化された x86/SSE2 スミス・ウォーターマンコードを用いてベンチマーク化し、公平な比較を確保すること。

実験結果

リサーチクエスチョン

  • RQ1ロックフリーでフェンスフリーな MPMC キュー設計は、従来のミューテックスベースやアトミックベースの同期と比較して、ストリーミングワークロードにおける通信オーバーヘッドを著しく低減できるか?
  • RQ2スミス・ウォーターマン相同性アラインメントアルゴリズムにおいて、FastFlow の性能は Cilk、OpenMP、TBB、および手作業最適化済み SWPS3 バージョンと比較してどうなるか?
  • RQ3FastFlow の低レベル通信抽象化は、特に細粒度でデータ並列なストリーミングタスクにおいて、高レベルフレームワークよりも優れた性能を実現できるか?
  • RQ4TBB はマイクロベンチマークでは優れた結果を示しているが、スミス・ウォーターマンベンチマークでは想定より低い性能を示すのはなぜか?
  • RQ5FastFlow はアルゴリズムの変更を要せず、従来の手作業最適化済みのシーケンシャルコードを効率的に並列化できるか?

主な発見

  • FastFlow は、プロテイン P01111 を UniProt DB に対してスミス・ウォーターマン相同性アラインメントする際、OpenMP より最大 35%、Cilk より最大 226% 高速な性能を達成した。
  • 短いクエリシーケンスでは、計算時間に比して通信オーバーヘッドが小さいため、FastFlow の性能優位性が顕著に現れた。
  • TBB はスミス・ウォーターマンベンチマークにおいて、想定より低い性能を示した。これは、タスクスケジューラーやキュー管理に予期しないオーバーヘッドが存在する可能性を示唆している。
  • 短いシーケンスにおいて、FastFlow は最新の手作業最適化済み SWPS3 実装を上回り、従来のコードを効率的に並列化できる能力を実証した。
  • 合成マイクロベンチマークおよび実世界のバイオインフォマティクスワークロードの両方において、FastFlow は評価されたすべてのフレームワークを一貫して上回った。
  • FastFlow の設計により、ロックフリーで低遅延な通信チャネルのおかげで、循環グラフを含む任意のストリーミングネットワークトポロジーを効率的にサポートできるようになった。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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