並列化によって高速化できない科学コンピューティングの有名な問題/アルゴリズムはありますか


27

並列化によって高速化できない科学的コンピューティングの有名な問題/アルゴリズムはありますか?CUDAに関する本を読んでいる間、ほとんどのことができるように思えます。


メモリ階層を考慮した場合でも、バイナリ検索を高速化することはできません(大幅に、つまり要因によって)。

グラムシュミットアルゴリズム:en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process

3
@Anycornいいえ、左向きの古典的なGram-Schmidtと右向きの変更されたGram-Schmidtは並行してうまく機能します。最近普及したTSQRを含む他の多くの並列QRアルゴリズムがあります。
ジェドブラウン

@Raphael:係数log(n)、n =#processorsによってバイナリ検索を高速化することは可能だと思います。代わりに、検索間隔を部分に分割し、どこで続行するかを確認して、間隔をn部分に分割します。おそらくもっと効率的な方法があると思います。
miracle173

回答:


32

中心的な問題は、総計算量に対するクリティカルパス長さです。がに比例する場合、並列処理はせいぜい一定の高速化を提供します。場合より漸近的に小さい、問題サイズが増加するにつれて、より多くの並列処理のための余地があります。が入力サイズ多項式であるアルゴリズムの場合、最適なケースはです。これは、対数時間未満で計算できる有用な量が非常に少ないためです。T C T C T T N C ログTCTCTCTTNClogT

  • C=T標準アルゴリズムを使用した三重対角解法。すべての操作は、前の操作の完了に依存しているため、並列処理の機会はありません。三重対角問題は、ネストされた解剖直接解法、マルチレベルドメイン分解、または高調波拡張を使用して構築された基底関数を使用したマルチグリッドを使用して、並列コンピューターで対数時間で解決できます(これらの3つのアルゴリズムは多次元で異なりますが、1Dで正確に一致する場合があります)。
  • 行列を使用した密な下三角解法はですが、クリティカルパスはであるため、いくつかの並列処理が有効です。T = N = Om 2C = m = m×mT=N=O(m2)C=m=T
  • マルチグリッドとFMMは両方ともであり、クリティカルパスの長さはです。C = log TT=NC=logT
  • 時間の明示的な波動伝搬ドメインの規則的メッシュ上の必要(安定性のための)時間ステップ、従ってクリティカルパスは少なくともです。総作業量はです。プロセッサの最大有効数はで、残りの係数は、並列処理の増加によって回復できません。0 1 、D、K = τ / Δ T τ N 1 / D C = K T = kのN = τ N D + 1 / D P = T / C = N N 1 / Dτ(0,1)dk=τ/ΔtτN1/dC=kT=kN=τN(d+1)/dP=T/C=NN1/d

正式な複雑さ

NCの複雑性クラスは、(対数多項式時間で、すなわち)並行して効率的に解くことができ、これらの問題を特徴付けます。であるかどうかは不明ですが、偽であると広く仮定されています。これが実際に当てはまる場合、P-completeは、「本質的に順次」であり、並列処理によって大幅に高速化できない問題を特徴付けます。NC=P


13

これに理論的な側面を与えるために、は並列プロセッサを備えたシステムで時間で解ける複雑度クラスとして定義されます。が多項式時間で解ける問題の集合である場合、(ほとんどの人はそうではないと思われますが)かどうかはまだ不明です。並列化する「最も難しい」問題は、次のように知られている内のすべての問題という意味で、-complete問題に減少させることができるを経由して-complete問題削減。単一の完全問題がにあることを示す場合、であることを証明します。NCO n kP = N C P P P P P N C P N C P = N CO(logcn)O(nk)P=NCPPPPNCPNCP=NC (ただし、上記のようにおそらく誤りです)。

したがって、 -completeの問題は直感的に並列化するのが困難です(ただし、大幅な高速化は可能です)。私たちも非常に良い一定の係数スピードアップを持っていない-complete問題は、線形計画(参照され、この OR交換にコメントを)。PPP


9

アムダールの法則を揺るがすことから始めます。基本的に、多数のシリアルステップを持つものはすべて、並列処理の恩恵を受けます。いくつかの例には、解析、正規表現、およびほとんどの高比率圧縮が含まれます。

それとは別に、重要な問題は多くの場合、メモリ帯域幅のボトルネックです。特に、ほとんどのGPUでは、理論上のフロップはALUに到達できる浮動小数点数を大幅に上回っています。これは、低演算強度(フロップ/キャッシュミス)のアルゴリズムがRAMでの待機時間の大半を費やすためです。

最後に、コードの一部が分岐を必要とするときはいつでも、ALUは通常ロジックよりも優れているため、良好なパフォーマンスが得られることはほとんどありません。

結論として、GPUから速度を得るのが難しいものの本当に簡単な例は、整数の配列内のゼロの数を単純にカウントすることです。 1)ゼロを見つけ、操作ごとに少なくとも1つのメモリフェッチを行う場合。

分岐問題のない例は、別のベクトルの累積和であるベクトルを計算することです。([1,2,1]-> [1,3,4])

これらが「有名」とみなされるかどうかはわかりませんが、確かに並列コンピューティングでは役に立たない多くの問題があります。


3
あなたが与えた「分岐のない例」はプレフィックスサムであり、実際には良い並列アルゴリズムを持っています:http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html ゼロの数を計算することも同様の理由で効率的です。算術強度周りに方法は...にもかかわらず、ありません
マックス・ハッチンソン

クール。私はその上で修正します。
meawoppl

8

アイコナール方程式を解くための(有名な)高速マーチング法は、並列化によって高速化することはできません。アイコナール方程式を解く他の方法(高速スイープ法など)があり、これらは並列化により適していますが、ここでも(並列)高速化の可能性は限られています。

アイコナール方程式の問題は、情報の流れがソリューション自体に依存することです。大まかに言うと、情報は特性(光学系の光線)に沿って流れますが、特性はソリューション自体に依存します。また、離散化されたアイコナール方程式の情報の流れはさらに悪化し、並列高速化が必要な場合は追加の近似(高速掃引法に暗黙的に存在するような)が必要になります。

並列化の難しさを確認するには、SethianのWebページにある例のような素敵な迷宮を想像してください。ラビリンスを通る最短経路上のセルの数(おそらく)は、対応する問題を解決する(並列)アルゴリズムのステップ/反復の最小数の下限です。

(下限は証明が難しいことで悪名高く、アルゴリズムで使用される操作に関する合理的な仮定を必要とすることが多いため、「(おそらく)is」と書いています。)


良い例ですが、あなたの主張する下限は信じられません。特に、マルチグリッド法を使用してアイコナール方程式を解くことができます。高周波ヘルムホルツのマルチグリッドと同様に、課題は主に適切な粗い空間を設計することです。ラビリンスの場合、グラフ集約戦略は効果的である必要があり、ラビリンスのセグメントのローカル(したがって独立した)問題を解くことによって決定される粗い表現を使用します。
ジェドブラウン

一般に、マルチグリッドメソッドがうまくいくと、問題の粒度が記述よりも低くなり、コースの解決ステップから不均衡な「正解の量」が発生することを意味します。ただの観察ですが、そのようなことの下限はトリッキーです!
meawoppl

@JedBrown実用的な観点から、高周波数ヘルムホルツのマルチグリッドは、あなたのコメントが暗示しているように思われるものに反して、非常に挑戦的です。そして、アイコナール方程式にマルチグリッドを使用することは、控えめに言っても「珍しい」ことです。しかし、提案された下限に対するあなたの「理論的な」反対意見があります。ラビリンス内のさまざまなポイントからの時間オフセットは、これらのポイントに到達する時間がわかる前に計算できます。しかし、実際には、汎用並列アイコナールソルバーは、実際に限界に近づいたら幸福です。
トーマスクリンペル

私はそれが簡単だったことを意味するつもりはありませんでした、波線の粗い空間は確かに非常に技術的です。しかし、オープンな地域ではすでに並列化の機会があり、狭い「ラビリンス」(標準的な方法ではほとんど並列性が公開されていない)では、アップスケーリングの問題は扱いやすいことに同意すると思います。
ジェドブラウン

39スライド@JedBrown www2.ts.ctw.utwente.nl/venner/PRESENTATIONS/MSc_Verburg.pdfを(2010年)、「2Dから3Dへのソルバーを引き出す」と「強く波数を変化させた問題にメソッドを適応」のようなものを言います。したがって、波線マルチグリッドは有望かもしれませんが、現在の問題を説明するには、「非常に技術的な」よりも「まだ成熟していない」方が適しているようです。そして、それは実際には高周波ヘルムホルツソルバーではありません(「全波」ソルバーであるため)。他にも「十分に成熟した」マルチグリッドヘルムホルツソルバー(「フルウェーブ」ソルバー)がありますが、それでも「アクティブな研究」です。
トーマスクリンペル

1

実際には並列化が困難な別のクラスの問題は、数値化の安定性がシリアル化によって達成される丸め誤差に敏感な問題です。

たとえば、Gram–Schmidtプロセスとその逐次変更を検討してください。アルゴリズムはベクトルで機能するため、並列ベクトル演算を使用することもできますが、スケーリングはうまくいきません。ベクトルの数が多く、ベクトルサイズが小さい場合、並列の古典的なGram-Schmidtと再直交化の使用は、単一の変更されたGram-Schmidtよりも安定して高速になる場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.