ディスク速度、pci 速度 (gpgpu)、またはその他のボトルネックの制限により、データへのアクセスが遅くなるアルゴリズムを設計するための経験則を探しています。
また、アプリケーションのメモリが gpgpu メモリを超える場合、gpgpu プログラムをどのように管理しますか?
ディスク速度、pci 速度 (gpgpu)、またはその他のボトルネックの制限により、データへのアクセスが遅くなるアルゴリズムを設計するための経験則を探しています。
また、アプリケーションのメモリが gpgpu メモリを超える場合、gpgpu プログラムをどのように管理しますか?
一般に、GPU メモリは、アルゴリズムのデータ サイズに対する恣意的な制限であってはなりません。GPU メモリは、GPU が現在操作しているデータの「キャッシュ」と見なすことができますが、多くの GPU アルゴリズムは、「キャッシュ」に収まりきらないほど多くのデータを操作するように設計されています。これは、計算の進行中に GPU との間でデータを移動することによって実現されます。GPU には、これを可能にする特定の同時実行およびコピー/計算オーバーラップ メカニズムがあり ます。
これは通常、独立した作業がデータのセクションで完了できることを意味します。これは通常、並列化可能なアプリケーションでの高速化の良い指標です。概念的には、これは大規模な MPI アプリケーション (高性能 linpack など) に似ています。これは、作業を細かく分割し、計算のためにさまざまなマシン (MPI ランク) に送信します。
データの処理量がデータ転送のコストに比べて少ない場合でも、ストレージ システムの変更によって直接対処しない限り、データ転送速度がボトルネックになります。
データセットが大きすぎて GPU メモリに一度に収まらないアウトオブコアまたはアルゴリズムを処理するための基本的なアプローチは、分離可能なデータで機能するアルゴリズムのバージョンを決定し、「パイプライン化された」アルゴリズムを作成することです。データをチャンクで処理します。このようなプログラミング手法をカバーするサンプル チュートリアルはこちらです(フォーカスは 40 分前後から始まりますが、ビデオ全体が関連しています)。