Skip to main content
QUICK REVIEW

[論文レビュー] Cpp-Taskflow: A General-purpose Parallel and Heterogeneous Task Programming System at Scale

Tsung‐Wei Huang, Dian-Lun Lin|arXiv (Cornell University)|Apr 23, 2020
Parallel Computing and Optimization Techniques被引用数 1
ひとこと要約

Cpp-Taskflow は、静的および動的タスクスケジューリングをサポートする柔軟なタスクグラフモデルを備えた C++ ベースのタスクプログラミングシステムであり、高性能で異種並列計算を実現する。大規模な機械学習ワークロードにおいて、40 CPU および 4 GPU を搭載したシステムで、oneTBB や StarPU と比較して、実行速度が最大 1.5 倍速くなり、メモリ使用量が最大 1.6 倍少なく、コード量が最大 1.7 倍少なくて済む。

ABSTRACT

The Taskflow project addresses the long-standing question: How can we make it easier for developers to write parallel and heterogeneous programs with high performance and simultaneous high productivity? Taskflow develops a simple and powerful task programming model to enable efficient implementations of heterogeneous decomposition strategies. Our programming model empowers users with both static and dynamic task graph constructions to incorporate a broad range of computational patterns including hybrid CPU-GPU computing, dynamic control flow, and irregularity. We develop an efficient heterogeneous work-stealing strategy that adapts worker threads to available task parallelism at any time during the graph execution. We have demonstrated promising performance of Taskflow on both micro-benchmark and real-world applications. As an example, we solved a large machine learning workload by up to 1.5x faster, 1.6x less memory, and 1.7x fewer lines of code than two industrial-strength systems, oneTBB and StarPU, on a machine of 40 CPUs and 4 GPUs.

研究の動機と目的

  • 高性能で生産性の高い並列処理および異種処理プログラムの記述という課題に取り組む。
  • ハイブリッド CPU-GPU 実行や動的制御フローなどの複雑な計算パターンの開発を簡素化する。
  • 実行時並列性に適応することで、多様なハードウェアにわたる効率的なタスクスケジューリングを実現する。
  • 既存の産業用タッキングシステムと比較して、コードの複雑さを軽減しながら性能を向上させる。

提案手法

  • システムは、静的および動的タスクグラフの両方を構築できる汎用的なタスクプログラミングモデルを採用している。
  • 実行中に利用可能なタスク並列性に応じてワーカースレッドを適応させる異種ワーキングスティール戦略を採用している。
  • 柔軟なタスク依存関係を通じて、不規則で動的な計算パターンのサポートをタスクフローが実現している。
  • ランタイムは、同期のオーバーヘッドを最小限に抑えるように、タスクを CPU および GPU 間で効率的に分配管理している。
  • 最小限のボイラープレートで記述可能な表現力に富んだ高水準なタスク構成を可能にする C++ ネイティブ API を提供している。
  • 実行時条件に基づいて、利用可能な実行ユニットにわたってタスクを再配分することで、動的にワークロードをバランスさせる。

実験結果

リサーチクエスチョン

  • RQ1異種システムにおいて、静的および動的タスクグラフの両方をサポートするタスクプログラミングモデルをどのように設計できるか?
  • RQ2動的ワークロードにおいて、CPU および GPU 間で効率的なロードバランスを実現するスケジューリング戦略は何か?
  • RQ3統一されたタッキングシステムは、専用の産業用システムと比較して、性能、メモリ使用量、コードの単純さの面で優れていると言えるか?
  • RQ4異種環境において、不規則で構造の不定な計算パターンは、どのように処理されるか?
  • RQ5単一のタッキングフレームワークは、性能を犠牲にすることなく、開発の複雑さをどの程度軽減できるか?

主な発見

  • Cpp-Taskflow は、40 CPU および 4 GPU を搭載したマシンで、大規模な機械学習ワークロードにおいて、oneTBB や StarPU と比較して最大 1.5 倍の高速実行を達成した。
  • 同じワークロードにおいて、2 つの産業用システムと比較して、最大 1.6 倍のメモリ使用量削減が達成された。
  • oneTBB や StarPU と比較して、コード量が最大 1.7 倍少なくて済み、生産性の向上が示された。
  • 異種ワーキングスティール戦略は、実行時における動的タスク並列性に効果的に適応した。
  • 最小限のパフォーマンスオーバーヘッドで、ハイブリッド CPU-GPU コンピューティングや動的制御フローといった複雑なパターンを効果的にサポートした。
  • タスクグラフモデルにより、不規則でデータ依存性のある計算ワークフローの効率的実装が可能になった。

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

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

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

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