ウィキペディアによると、「非常に並列な」問題とは、問題を多数の並列タスクに分離するのにほとんどまたはまったく労力を必要としない問題です。レイトレーシングは、原則として各光線を並行して処理できるため、よく例として挙げられます。
明らかに、いくつかの問題は並列化がはるかに困難です。不可能な場合もあります。どのような用語が使用されているのか、これらの難しいケースの標準的な例は何なのか疑問に思っています。
可能な名前として「迷惑なシーケンシャル」を提案できますか?
ウィキペディアによると、「非常に並列な」問題とは、問題を多数の並列タスクに分離するのにほとんどまたはまったく労力を必要としない問題です。レイトレーシングは、原則として各光線を並行して処理できるため、よく例として挙げられます。
明らかに、いくつかの問題は並列化がはるかに困難です。不可能な場合もあります。どのような用語が使用されているのか、これらの難しいケースの標準的な例は何なのか疑問に思っています。
可能な名前として「迷惑なシーケンシャル」を提案できますか?
本質的にシーケンシャル。
例:女性の数は妊娠期間を短縮しません。
「恥ずかしいほど並列」の問題の反対は複数あります。
反対の 1 つは、並列化できない問題です。つまり、複数のプロセッサを使用しても速度が向上しない問題です。すでにいくつかの提案が投稿されていますが、私はさらに別の名前を提案します:完全に連続した問題です。
例: I/O バウンドの問題、「f 1000000 (x 0 ) を計算する」タイプの問題、特定の暗号化ハッシュ関数の計算.
もう 1 つの反対は、多くの並列通信を必要とする並列化可能な問題 (通信集約型の問題) です。このような問題の実装は、高帯域幅で低遅延の相互接続を備えたスーパーコンピューターでのみ適切にスケーリングされます。これを、相互接続が非常に貧弱なシステム (例:ファーム)でも効率的に実行される、非常に並列的な問題とは対照的です。
通信集約型の問題の注目すべき例:大規模で密集した行列のA x = b
場所を解く。A
実際のところ、問題の実装はTOP500ランキングをコンパイルするために使用されます。これは、個々の CPU の計算能力と相互接続の品質 (通信の強度による) の両方を強調するため、優れたベンチマークです。
より実際的な言い方をすれば、離散時間ステップを使用して規則的なグリッド上で偏微分方程式系を解く数学モデル (考えてみてください: 天気予報、インシリコ衝突試験) は、ドメイン分割によって並列化できます。つまり、各 CPU はグリッドの一部を処理し、各タイム ステップの最後に、CPU は領域境界での結果を「隣接する」CPU と交換します。これらの交換は、このクラスの問題をコミュニケーション集約型にします。
私はこれを投稿しないのに苦労しています...私はそれが議論に何も追加しないことを知っているので..しかしそこにいるすべてのサウスパークファンのために
「スーパーシリアル!」
「頑固にシリアル」?
恥ずかしいほど並列の反対は、アムダールの法則です。これは、一部のタスクは並列化できないこと、および完全に並列化されたタスクに必要な最小時間は、そのタスクの純粋に順次的な部分によって決定されることを示しています。
順次プロセスの「標準的な例」:
P-完全 (ただし、それはまだわかっていません)。
「屈辱的シーケンシャル」を使う
ポール
それはすべてデータの依存関係と関係があります。驚異的並列問題は、ソリューションが多くの独立した部分で構成されている問題です。この性質の反対の問題は、並行して実行できることがほとんどまたはまったくない、大量のデータ依存関係がある問題です。 退化的に依存していますか?
最もよく耳にする用語は「密結合」です。つまり、各プロセスは、中間データを共有するために頻繁に相互作用し、通信する必要があります。基本的に、各プロセスは他のプロセスに依存して計算を完了します。
たとえば、マトリックス処理では、多くの場合、各配列パーティションのエッジで境界値を共有する必要があります。
これは、問題の各部分が完全に自己完結型であり、IPC がまったく (またはほとんど) 必要とされない、恥ずかしいほど並列 (または疎結合) の問題とは対照的です。マスター/ワーカーの並列処理を考えてください。
自慢のシーケンシャル。
私は常に、クイックソートのパーティションステップで「悲しいことにシーケンシャル」を好んでいました。
自然で、手に負えないほど連続的な問題が発生するのはどのようなものかを推測する必要がある場合は、試してみてください。
至福のシーケンシャル
「恥ずかしい平行」に対抗する。
「うれしいシーケンシャル」
並列処理とは、同じ時間ステップ t で多くのジョブを実行する行為であることを考慮してください。反対は時系列の問題である可能性があります
「完全シリアル?」
科学者が、できないことよりもできることについて考えていることは驚くべきことではありません。特にこの場合、並列化の代替手段は、通常どおりにすべてを実行することです。
反対は「当惑するほどシリアル」です。
完全に非並列化可能ですか? 辛うじて並列化可能ですか?
本質的にシーケンシャルな問題の例。これは、CAD パッケージやある種のエンジニアリング分析では一般的です。
ノード間のデータ依存関係を伴うツリー トラバーサル。
グラフをトラバースし、ノードの重みを合計することを想像してください。
あなたはそれを並列化することはできません。
CAD ソフトウェアはパーツをツリーとして表し、オブジェクトにレンダリングするにはツリーをトラバースする必要があります。このため、CAD ワークステーションは、多くのコアではなく、より少ないコアと高速を使用します。
読んでくれてありがとう。
もちろん可能ですが、どちらの「名前」も問題ではないと思います。関数型プログラミングの観点からは、「迷惑なシーケンシャル」部分は、アルゴリズムのほぼ独立した最小の部分であると言えます。
「驚異的並列」は、実際には並列アプローチを採用していない場合でも、コーディングの慣例としては不適切です。
したがって、たとえその時点で並列処理を利用していなくても、優れたコーディング手法が常にソリューションを独立した部分に分解することである場合、これらに名前を付けることに意味はありません。