並列の複雑さの結果を絶えず多くのコアに縮小する方法は?


20

クラスNCによって与えられる「並列アルゴリズムによる効率的な解決」の複雑さの理論的見解を受け入れるのに問題がありました。

NCは、、プロセッサで時間並列アルゴリズムによって解決できる問題のクラスです。P N O N 、KC K NO(logcn)p(n)O(nk)c,kN

PRAMを想定できます。

私の問題は、これが「実際の」マシン、つまり有限量のプロセッサを備えたマシンについてあまり語っていないように見えることです。現在、プロセッサ上でプロセッサアルゴリズムを「効率的に」シミュレートできることが「わかっている」と言われています。のp NO(nk)pN

ここで「効率的に」とはどういう意味ですか?これは民間伝承ですか、それともシミュレーションによって生じるオーバーヘッドを定量化する厳密な定理がありますか?

私が起こるのが怖いのは、シーケンシャルアルゴリズムと、プロセッサでシミュレートしたときに時間もかかる「効率的な」並列アルゴリズムを持つ問題があることです逐次アルゴリズムが漸近的に最適な場合、この粒度レベルの分析で期待できるのはすべてです)。この場合、私たちが見る限り、スピードアップはありません。実際、シミュレートされた並列アルゴリズムは、逐次アルゴリズムより遅い場合があります。つまり、私は境界(またはそのような結果がないことの宣言)よりも正確なステートメントを本当に探しています。p O n kO(nk)pO(nk)O


ブレントの定理?
cic

あなたは意味するかTp<Wp+D?そうである場合、これは特定の状況でのみ適用可能であり、ランタイムをすぐに変換することもできません。または、もしそうなら、答えを詳しく述べてください。
ラファエル

NCは、「より多くのハードウェアとより少ないランタイムをトレードオフすることは可能ですか?」という質問に答えます。一定のハードウェアに制限することもできますが、これは一定のメモリに制限することに似ており、いくつかの問題をよりよくモデル化できます。実際の使用については、キャリールックヘッド加算器、ビットの加算が行われるようにハードウェアを追加するを参照してください。O N NO(N)
AProgrammer

回答:


13

プロセッサの数が定数によって制限されていると仮定する場合、NCにある問題は実際にはあまり意味がないことは正しいです。k個のプロセッサとt並列時間を持つPRAM上のアルゴリズムは、O(kt)時間のシングルプロセッサRAMでシミュレートできるため、kが定数の場合、並列時間とシーケンシャル時間は一定の係数だけ異なります。

ただし、入力サイズが大きくなるにつれて、より多くのプロセッサを備えたコンピューターを準備できると仮定した場合、NCに問題があるということは、より多くのプロセッサーを準備できる限り、実行時間が「非常に短い」ことを意味します。入力サイズの多対数。この仮定が非現実的であると思う場合は、無制限のメモリの仮定と比較してください:実際のコンピューターには有限のスペースしかありませんが、アルゴリズムと複雑性の研究では、ほとんど常に計算デバイスに一定の上限がないと仮定していますスペースにバインドされています。実際には、これは、入力サイズが大きくなるにつれて、より多くのメモリを備えたコンピューターを準備できることを意味します。これは、実際にコンピューターを使用する方法です。NCは、並列計算の類似した状況をモデル化します。


1
1)はい、常に多くのコアで並列化すると、一定の高速化しか得られません。それは固有のものであり、悲しいことにタームに隠されています。(私見)興味深い質問は:(最適な)高速化を取得できますか、のみ、またはですか?2)無限のメモリの仮定は、大量のRAMの可用性によって正当化できます(技術的にはハードディスクを追加できます)が、これは一般的にプロセッサには当てはまりません。最近の典型的な(個人用)マシンのコアは16個以下です。言い換えれば、関連する問題のサイズまで「通常の」結果を使用でき、多くの並列結果はまでしか使用できません。K K / 2 K - 1 N 20Okk/2k1n20
ラファエル

4
@Raphael:特定の問題がNCに属するかどうかの質問は、あなたの質問をモデル化するものではありません。あなたの質問が面白くないと言っているのではありません。NCはそれをモデル化するのに適切な複雑さのクラスではないと言っているだけです。
伊藤剛

実際にそれを聞いてうれしいです。しかし、人はそうではないと主張します。NCである必要はありませんが、一般に複雑な理論的結果があります。他のクラスではどうですか?
ラファエル

修正:NCにある問題は、プロセッサの数が入力サイズの十分に大きい多項式である場合、実行時間が多対数であることを意味します。プロセッサの数がような固定多項式、またはような低速の非定数関数であると思われるより現実的なシナリオでは、NCのメンバーシップは正式には何も意味しませんすべて。OlognO(n)O(logn)
-JeffE

@JeffE:それは修正ではありません。厳密な意味を与えることなく、「より多くのプロセッサを準備する」と書いただけです(そうすることでポイントが曖昧になると思ったので)。
伊藤剛

10

は、効率的な並列アルゴリズムを特徴付ける最良の方法ではないことに同意します。NC

実際、定義上、NCには効率的に並列化できない多くの問題も含まれています。一般的な例は、並列バイナリ検索です。この問題は、あっても並列バイナリ検索が多対数時間の複雑さを持つために発生します。最悪の場合に最大で対数時間を必要とするシーケンシャルアルゴリズムは、並列実行可能性に関係なくます。N Cp=1NC

しかし、待って、もっとあります。

NCアルゴリズムは、多項式数のプロセッサを備えた並列マシンを想定して、中程度の大きさの問題を多対数時間で解決します。ただし、実際には、中規模のマシン(プロセッサの観点から)を使用して、大きな問題を解決します。プロセッサの数は、サブ多項式、さらにはサブリニアになる傾向があります。

O N ε0 < ε < 1 N C N N PO(nϵ),0<ϵ<1NCnnN0.5×109n<lg3nn0.5×109NC

回答の1つで、「実際には、これは、入力サイズが大きくなるにつれて、より多くのメモリを備えたコンピューターを準備できることを意味します。これは、実際にコンピューターを使用する方法です。NCは、並列計算」。

私はこの観点に部分的に同意します。DRAMチップは時間の経過とともに安価であり、その主要コンポーネント(プロセッサ、メモリ、インターコネクトなど)に関して並列コンピュータのバランスを取るため、古いスーパーコンピュータが廃止されると、より多くのメモリを備えた新しい並列コンピュータを購入します。

pnp

そのため、メモリスケーラブルな並列アルゴリズムを設計することがますます重要になります。これらは大きな問題に対して実用的だからです。

n3n

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