タグ付けされた質問 「parallel-computing」

複数の処理装置で同時に計算するアルゴリズムまたはプログラムに関する質問。同時または分散コンピューティングと混同しないでください!

1
プロセッサーを使用して
n 2台のコンピューターで時間の複雑さで並列に配列の最大値を見つけるアルゴリズムをクラスで提示されました。O (1 )O(1)O(1)ん2n2n^2 アルゴリズムは: 長さnの配列Aがあるとします。 長さnのフラグ配列Bを作成し、台のコンピューターでゼロで初期化します。んnn 最小値のインデックスでB内のすべての2つの要素とライト1を比較するのコンピュータ。ん2n2n^2 台のコンピューターを持つAで0のインデックスを見つけます。んnn 講師はnでそれができるかもしれないと私たちにからかった台のコンピューターとlogn時間の複雑さ。んログんnlog⁡n\frac{n}{\log n}ログんlog⁡n\log n たくさん考えた後、どうすればいいのかわからなかった。何か案が?

1
GPUでの比較がなぜそれほど高価なのですか?
衝突検出クラスのパフォーマンスを向上させようとしているときに、gpuで費やされた時間の約80%がループするバケットの境界を把握しようとするif / else条件に費やされたことがわかりました。 より正確に: 各スレッドはIDを取得し、そのIDによってメモリから三角形(それぞれ3つの整数)をフェッチし、それらの3つによって頂点をフェッチします(それぞれ3つの浮動小数点数)。 次に、頂点を整数グリッドポイント(現在は8x8x8)に変換し、それらをそのグリッドの三角形の境界に変換します。 3つのポイントを境界に変換するために、各ポイント間で各次元の最小/最大を見つけます 私が使用しているプログラミング言語にはminmax組み込み関数がないため、次のように自分で作成しました。 procedure MinMax(a, b, c): local min, max if a > b: max = a min = b else: max = b min = a if c > max: max = c else: if c < min: min = c return (min, max) …

2
カリーハワード同型における並列または並行プログラムの現在の状態は何ですか?
ギラードの証明と型では、次のように読むことができます。 アルゴリズムの観点から見ると、同じ証明を書く方法が多数あるため、シーケンシャル微積分にはカリーハワード同型はありません。これにより、型付けされた計算としてそれを使用できなくなりますが、この種のいくつかの深い構造を垣間見ることができます。λλ\lambda プルーフとタイプ、JYジラード(ページ28) しかし、(線形論理について)それを読むこともできます コンピュータサイエンスの観点からは、並列処理への有望なアプリケーションを使用して、遅延、副作用、メモリ割り当ての問題に新しいアプローチを提供します[GirLaf、Laf87、Laf88]。 証明とタイプ、JYギラード(ページ149、Yves Lafont著) 並列プログラムはどのようにしてカリーハワード同型にリンクされていますか?それについての現在の考えは何ですか?

1
人工ニューラルネットワークアルゴリズムをマップリデュース操作で表現できますか?
人工ニューラルネットワークアルゴリズムをマップリデュース操作で表現できますか?また、ANNに適用される並列化の方法と、クラウドコンピューティングへのそれらの適用にも、より一般的に興味があります。 1つのアプローチは、各ノードで完全なANNを実行し、グリッドを単一のエンティティのように扱うために結果を統合することを含むと思います(入力/出力と機械学習の特性に関して)。そのような統合戦略はどのように見えるか。

1
結合は並列化できますか?
述語で2つの関係を結合したいとします。これはNCですか? NCにないことの証明はであることの証明になると私は理解しているので、それが未解決の問題であるという証拠を答えとして受け入れます。P≠ NCP≠NCP\not=NC 一般的なケースだけでなく、特定のケースにも興味があります(たとえば、並列化できる特定のデータ構造がある場合)。 編集:コメントからこの投稿にいくつかの明確化をもたらすために: 等結合検討できます。X = B 。y。シングルプロセッサでは、ハッシュベースのアルゴリズムはO (| A | + | B |)で実行され、これは各セットを読み取る必要があるため、私たちができる最善の方法です。A 。X = B 。yA.x=B.yA.x = B.yO (| A | + | B |)O(|A|+|B|)O(|A|+|B|) 述語が各ペアをチェックする必要がある「ブラックボックス」である場合、ペアであり、それぞれが中にあるかどうかにかかわらず、2 a b可能性があります。各ペアをチェックすると、可能性が半分に分割されます。そのため、私たちにできる最善のことはO (a b )です。| A | ⋅ | B ||A|⋅|B||A|\cdot|B|2a b2ab2^{ab}O (a b )O(ab)O(ab) logknlogk⁡n\log^k n


1
並行して最大独立セットを見つける
グラフで、次のプロセスを実行します。G (V、E)G(V,E)G(V,E) 最初、すべてのノードは色付けされていません。VVV には色付けされていないノードがありますが、色付けされていない各ノードは次のことを行います。 VVV ランダムな実数を選択し、それを近隣のすべてに送信します。 その数を近隣の数と比較します。自分の数が厳密に最小の場合、隣人は自分自身を赤く塗りつぶし、隣人に通知します。 隣人が赤くなった場合、このノードは自分自身を黒く塗ります。 例えば: グラフがabcdeというパスであるとします。 最初のステップの数値が次のとおりであるとします:1-2-0-3-4。 ノードaとcは赤く塗られています。ノードbとdは黒く塗られています。 2番目のステップでは、ノードeのみが未着色のままです。最小限に抑えられているため、赤く塗りつぶされます。 私の質問は:すべてのノードが色付けされる前にこのプロセスが実行する平均ステップ数は何ですか? 私の現在の計算では、推定が導かれますが、これは真実であるにはあまりにも良すぎるようです。ここに計算があります:O (1 )O(1)O(1) d個の隣接ノードを持つノードを考えます。vがその近傍の中で最小になる確率は、1 /(d + 1 )です。これが発生した場合、vとそのすべての近傍が色付けされます。したがって、各ステップで色分けされる頂点の予想数は、(d + 1 )/(d + 1 )= 1ノードあたり1です。したがって、各ステップで色分けされる頂点の予想される総数はO (n )なので、O (1vvvdddvvv1 /(d+ 1 )1/(d+1)1/(d+1)vvv(d+1)/(d+1)=1(d+1)/(d+1)=1(d+1)/(d+1)=1 O(n)O(n)O(n)すべてのノードが色付けされる時間。O(1)O(1)O(1) この分析が間違っている場合(おそらくそうです)、実際のステップ数はいくつですか? 編集:@JukkaSuomelaによって指摘されているように、上記のアルゴリズムはMetivier et al、2011によるものであり、これらの講義ノートで説明および分析されています。彼らは、実行時間がことを証明します。O(logn)O(log⁡n)O(\log n) しかし、私はまだこの分析がタイトであると確信していません。チェックしたすべてのグラフで、アルゴリズムは予想時間内に完了したようです。O(1)O(1)O(1) 私の質問は今です:このアルゴリズムが実際に平均でステップを必要とする最悪の場合のグラフは何ですか?O(logn)O(log⁡n)O(\log n)

2
ファイバーが複数のプロセッサを利用できないのはなぜですか?
ファイバーとスレッドの違いは、ファイバーが協調的にスケジュールされるのに対し、スレッドは先制的にスケジュールされることです。スケジューラのポイントは、CPUを「タイムシェアリング」することによって、それ以外の場合はシリアルプロセッサリソースを並列に動作させる方法のように見えます。ただし、各コアが独自のスレッドを実行しているデュアルコアプロセッサでは、シングルプロセッサが「タイムシェアリング」されていないため、一方のスレッドの実行を一時停止してもう一方のスレッドを続行する必要がないと思います。 それで、スレッドとファイバーの違いがスケジューラーによって中断される方法であり、物理的に別々のコアで実行しているときに中断する必要がない場合、スレッドが可能なときにファイバーが複数のプロセッサーコアを利用できないのはなぜですか? 混乱の原因: ..主にウィキペディア http://en.wikipedia.org/wiki/Fiber_%28computer_science%29 欠点は、ファイバーがプリエンプティブスレッドを使用せずにマルチプロセッサマシンを利用できないことです。 http://en.wikipedia.org/wiki/Computer_multitasking#Multithreading ... [ファイバー]は、複数のプロセッサを搭載したマシンのスレッドの利点の一部またはすべてを失う傾向があります。

1
NCの指数関数的アナログ?
Nickのクラス(NC)は、多項式数のプロセッサを使用して、多対数時間で決定できる問題のクラスです。 指数関数的なアナログについて知りたい。これは、指数関数的な数のプロセッサを使用して多項式時間で決定できる問題をカバーするだろう。 私が探しているのは、このクラスの名前と、このクラスと他の複雑性クラスとの間の既知の関係、またはクラスの正規の問題です。NPとco-NPが含まれるのは簡単なようですが、PSPACE内に含まれていると思いますが、それ以外についてはよくわかりません。

2
CUDAに最も近い理論的並列モデルはどれですか?
CUDA / OpenCLプログラミングモデルに最も近い理論上の並列モデルはどれですか? たとえば、汎用的なParallel Random Access Machine(PRAM)モデルにある程度適合します。ただし、さまざまなメモリアクセスのレイテンシと同期の問題を抽象化するため、これは一般的すぎます。 私の質問は、CUDAアーキテクチャが最も適合する理論的なモデルはどれですか(スレッドとスレッドのブロックの階層的な並列処理を考慮して)

2
Map-Reduceモデルの時間複雑度分析
Hadoop / MapReduceパラダイムで実行するようにアルゴリズムを再設計しようとしています。ビッグデータプラットフォームのアルゴリズムの時間の複雑さを測定するための全体的なアプローチがあるかどうか疑問に思っていました。 簡単な例として、n(= 10億)の数の平均を取ることは、O(n)+ Cで実行できます(除算が一定時間演算であると仮定)。Map Reduceのこの大規模な並列化可能なアルゴリズムを壊すと、データをk個のノードに分割することで、時間の複雑さは単にO(n / k)+ C + C 'になります。ここで、C 'は、開始ジョブの計画時間のオーバーヘッドとして想定できます。関与するシャッフルはなく、レデューサーの仕事はほとんど取るに足らないことに注意してください。 データに対する反復ループを使用したアルゴリズムのより完全な分析に興味があり、重いシャッフルとリデューサー操作を含みます。可能であれば、I / O操作とデータのネットワーク転送を組み込みたいです。

2
行列乗算プログラムの入れ子ループの不変式
Hoareロジックを使用して2つの行列を乗算するためのプログラムの正確性を証明することについて、卒業論文を作成しています。これを行うには、このプログラムの入れ子ループの不変式を生成する必要があります。 for i = 1:n for j = 1:n for k = 1:n C(i,j) = A(i,k)*B(k,j) + C(i,j); end end end 私は最初に内部ループの不変式を見つけようとしましたが、今までは本当のものを見つけることができません。上記のプログラムの不変式を見つけるのを手伝ってくれる人はいますか?
7 algorithms  loop-invariants  correctness-proof  formal-languages  regular-languages  pumping-lemma  logic  logic  programming-languages  lambda-calculus  term-rewriting  operational-semantics  complexity-theory  time-complexity  computability  proof-techniques  reductions  digital-preservation  distributed-systems  storage  algorithms  dynamic-programming  check-my-algorithm  reference-request  cryptography  quantum-computing  formal-languages  regular-languages  context-free  formal-grammars  algorithms  graphs  network-flow  algorithms  data-structures  randomized-algorithms  lists  computability  proof-techniques  undecidability  terminology  distributed-systems  parallel-computing  artificial-intelligence  heuristics  search-problem  algorithms  computational-geometry  algorithm-analysis  asymptotics  recurrence-relation  mathematical-analysis  master-theorem  algorithms  algorithm-analysis  runtime-analysis  computability  reductions  turing-machines  formal-languages  context-free 

1
全体的な実行時間を最小化するための負荷分散スキームの分析
特定の並列アプリケーションがマスタースレーブ設計を使用して多数のワークロードを処理するとします。各ワークロードは完了するまでに数サイクルかかります。特定のワークロードにかかるサイクル数は、既知の確率変数によって与えられます。そのようなワークロードが、同等のスレーブ(処理ノード)があると想定します。当然、この質問のより一般的なバージョンは、異なる機能のスレーブのケースに対処しますが、今のところこれは無視します。XXXnnnmmm マスターはワークロードを処理できませんが、ワークロードをスレーブノードに分散し、スレーブノードの進行状況を監視できます。具体的には、マスターは次のアクションを実行できます。 空きノードのワークロードの処理を即座に開始します。kkk 以前に開始されたワークロードのバッチのノードによる完了の確認を瞬時に受信します。kkk いつでも、瞬時に、すべてのノードの状態(空きまたはビジー)、完了したワークロードの数、および残っているワークロードの数を特定します。 簡単にするために、が除算すると仮定します。kkknnn すべてのスレーブを使用してすべてのワークロードの合計実行時間を最小化するための負荷分散戦略には少なくとも2つのカテゴリがあります(明確にするために、総処理時間ではなく、メイクスパンまたは実時間について話します。これは、この質問で行われている単純化の仮定の下で使用されている負荷分散戦略):静的および動的。静的スキームでは、すべての配置決定は時間で行われ。動的スキームでは、マスターは一部のスレーブによって行われている進行状況に関する情報を使用して配置決定を行うことができるため、より良い使用率を達成できます(実際には、静的スケジューリングと比較して動的スケジューリングに関連するオーバーヘッドがありますが、これらは無視してください)。今いくつかの質問のために:t=0t=0t = 0 ワークロードを静的にスケジュールするには、スレーブ間でワークロードのバッチをできるだけ均等に分割するよりも良い方法があります(簡単にするために、は分割するので、バッチを完全に均等に静的にスケジュールできると仮定することもできます)。 ?もしそうなら、どうですか?kkkmmmmmmn/kn/kn/k 最適な静的スケジューリングポリシーを使用して、の平均および標準偏差に関して、総実行時間の平均および標準偏差はどうあるべきですか?μμ\muσσ\sigmaXXX 単純なダイナミック・ロード・バランサは、スケジュール可能性がのバッチ最初に各スレーブへ作業負荷を、次に、ノードは初期完了するとバッチを、追加のバッチスケジュール先着順に各スレーブへ作業負荷を。したがって、2つのスレーブノードが最初にそれぞれ2つのワークロードの2つのバッチをスケジュールし、最初のスレーブが2つのバッチを完了すると、最初のスレーブに追加のバッチがスケジュールされ、2番目のスレーブは動作し続けます。最初のスレーブが2番目のバッチが最初の作業を完了する前に新しいバッチを完了すると、マスターは最初のスレーブへのスケジューリングを続行します。2番目のスレーブが作業の実行を完了すると、新しいワークロードのバッチが発行されます。例:iiikkkiiikkk DYNAMIC STATIC POLICY POLICY slave1 slave2 slave1 slave2 ------ ------ ------ ------ t<0 -- -- -- -- t<1 batch1 batch3 batch1 batch3 batch2 batch4 batch2 batch4 batch5 batch7 batch6 batch8 t=1 -- batch3 batch5 batch3 batch4 batch6 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.