1

グラフの頂点ごとに計算を行うアプリケーションを開発しています。ここでの主な問題は、各計算がかなり小さいため、レイテンシーです。たとえば、各計算は単独で実行するのに 10 ミリ秒かかる場合があるため、PGBL によってプロセスに大幅なレイテンシが追加されることはありません。

このタスクを実行するために、独自のベアボーン グラフ ルーチンをコーディングできます。もちろん、PBGL には、あると便利な機能が他にもたくさんあります。たとえば、レイテンシが問題にならない場合は、一部の計算を「クラウド」にオフロードする可能性さえあります。

では、基本的に、CPU またはマルチコア CPU 上のベクトル全体の計算のオーバーヘッドはどのくらいでしょうか? また、将来、頂点計算を GPU にオフロードすることは可能でしょうか?

私は PGBL を使用したことはありませんが、boost ライブラリで PGBL に出くわし、潜在的なレイテンシの問題を除けば、私のアプリケーションにとってほぼ完璧である可能性があるものとして目に留まりました。

たとえば、n 個のブランチに分割され、各ブランチの計算が個別のコアで実行される非常に単純なツリーと、PBGL を使用する場合のパフォーマンスの違いはどのようなものでしょうか? (短い計算時間の場合、明らかに計算が大きいほど差は小さくなります)

4

1 に答える 1

1

Parallel BGL は、主に分散メモリ ライブラリです。共有メモリ並列処理を組み込んだ研究版もあります。長期的には、アクセラレータ メモリ モデルが内部カーネルのアトミック、オーバーラップする出力書き込みセット、および他の種類の並列化を助長するグラフ アルゴリズムをサポートするために必要なその他の複雑な動作をサポートすると仮定して、アクセラレータ サポートを追加する可能性があります。主な目標は、それを使用して表現されたグラフ アルゴリズムをさまざまなハードウェアを使用して並列化できる単一の並列抽象化を見つけることです。

いずれにせよ、Parallel BGL があまり適していない、主に共有メモリの並列グラフ ライブラリを探しているように思えます。現時点では、複数の MPI ランクを実行する必要がありますが、これは「低レイテンシー」の制約を確実に満たしていません。何年にもわたって BGL の共有メモリおよび/または SIMD バージョンに関心がありましたが、何も実現しませんでした。Boost への共有メモリ並列ライブラリの追加 (Lockfree、さまざまな SIMD 実装およびコンテナーなど) により、ある種の共有メモリ並列 BGL を実装するために必要な労力はかなり少なくなってきているため、近いうちに実現する可能性があります。 .

于 2013-03-09T16:11:27.803 に答える