問題タブ [speculative-execution]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Haskellの投機的並列実行
解決しようとしている問題の1つに並列処理を利用することを考えています。問題は大まかにこれです:与えられた入力(ポイントのシーケンス)が最良の出力(これらのポイントから構成される最大の三角形、最長の線など)を見つけます。ポイントのシーケンスには3つの異なる「形状」がありますが、私は「最高のスコア」(通常は「長さ」×係数の形式)を持つものにのみ関心があります。形状をS1、S2、S3と呼びましょう。
S1を解くための2つの異なるアルゴリズムがあります-「S1a」はO(n 2)にあり、「S1b」はほとんどの場合より適切に動作しますが、最悪の場合はO(n 4)についてです。
最初の質問:S1aとS1bを並行して実行し、最初に終了した方を使用してもう一方を停止する簡単な方法はありますか?私がドキュメントを読んでいる限り、これはいくつかのforkIOを使用してプログラムでき、結果が得られたときにスレッドを強制終了します-もっと簡単なものがあるかどうかを尋ねるだけですか?
2番目の質問-はるかに難しい:私は最適化関数を次のように呼び出しています:
valueOfSxはすべての形状に固有であり、可能な解決策である「スコア」(またはスコアの推測)を返します。Optimizeはこの関数を呼び出して、最適なソリューションを見つけます。私が興味を持っているのは:
ただし、S1の結果がわかっている場合は、小さい解をすべて破棄できるため、より良い解が存在しない場合は、s2とs3の収束が速くなります(または、少なくとも最悪の解を破棄して、スペース効率を高めることができます)。私が今していることは:
問題は、たとえばS2とS3をこのように並行して実行できるかどうかです。どちらが先に終了しても、他のスレッドで実行されているスコア関数の「しきい値」パラメーターが更新されますか?ある意味で:
haskell - Haskellで「seq」または「pseq」と「par」が必要なのはなぜですか?
標準のサンプルコードのすべての部分が必要な理由を理解しようとしています。
なぜ以下では不十分なのですか?
上記の式は非常にわかりやすいようです。a
とb
を並行して評価し、結果を返しa+b
ます。理由は効率の理由だけですか:2番目のバージョンは1回ではなく2回スパークしますか?
次のより簡潔なバージョンはどうですか?
元の標準コードのように、b
事前に評価されていることを確認する必要があるのはなぜですか?a+b
cpu-architecture - 推測と予測の違い
コンピュータアーキテクチャでは、
(分岐)予測と推測の違いは何ですか?
これらは非常に似ているように見えますが、微妙な違いがあると思います。
javascript - Firefox が JavaScript ファイルを投機的にロードしないようにするにはどうすればよいですか?
Cookie を設定する HEAD に JavaScript コードがいくつかあります。ページの下部で、別の JavaScript ファイルをロードします。このファイルは、Cookie を使用して何を返すかを決定する動的なバックエンド ページによって提供されます。
投機的解析を使用するため、Firefox で問題が発生します。HEAD 内の JavaScript が実行される前に、ページの最後に JavaScript ファイルがロードされます。2 番目の JavaScript ファイルが読み込まれた時点では Cookie がまだ設定されていないため、バックエンド ページは Cookie の値を受け取りません。
Firefox が 2 番目の JavaScript ファイルをすぐに読み込まないようにする方法はありますか?
hadoop - Hadoop Reducer:投機的実行を使用して複数のディレクトリに出力するにはどうすればよいですか?
結果を別のディレクトリに出力する必要があるレデューサーがあります。これにより、後で出力をパーティションテーブルとしてHiveへの入力として使用できます。(Hiveはフォルダー名に基づいてパーティションを作成します)。これらの場所に書き出すために、現在、これを実現するためにHadoopフレームワークを使用していません。いわば、「Hadoopの背後」にある別々の場所に書き出すだけです。つまり、これらのファイルを出力するためにhadoopのAPIを使用していません。
mapred.reduce.tasks.speculative.execution
に設定すると問題が発生しましたtrue
。同じタスクに対する複数のタスクの試行が同じ場所に書き込んでいるため、これが当てはまると理解しています。
HadoopのAPIを正しく使用して、同じレデューサーから複数の異なるフォルダーに出力し、私も使用できるようにする方法はありますmapred.reduce.tasks.speculative.execution=true
か?(私はMultipleOutputsについて知っていますが、投機的実行をサポートするかどうかはわかりません。)
もしそうなら、それを行ってS3に出力する方法はありますか?
java - Java から Hadoop の投機的実行をオフにするにはどうすればよいですか
Hadoop 投機的タスク実行を読んだ後、新しい Java API を使用して投機的実行をオフにしようとしていますが、効果がありません。
これは私のメインクラスです:
そして、私の MapReducer は次のように始まります:
しかし、ログを見ると、次のように表示されます。
理解できれば、これは投機的実行がまだ続いていることを意味します。そうでなければ、入力ファイルが 16 個しかないのに、なぜ 26 個の分割があるのでしょうか。私は間違っていますか?
注: ログに次の警告が表示されるので、新しい API を使用していると思います。
hadoop - Hadoop の投機的実行テスト
私は修士論文 Hadoop 1.1.2 のために Hadoop に取り組んでいます。
私は投機的なタスクのための新しいアルゴリズムを研究しているので、この最初のステップでは、コードにいくつかの変更を適用しようとしています。
悲しいことに、これも 2 ノードを使用して、投機的実行を引き起こすことはできません。クラス DefaultTaskSelector (これは投機的タスクのクラスです) に Log としていくつかのコード行を書きましたが、このクラスは初期化後、FairScheduler クラスによって呼び出されることはありません。
設定ファイル (mapred-site...xml) でも「投機的」オプションを有効にしましたが、何もしませんでした。
質問は次のとおりです。どうすれば投機的実行を引き起こす/強制することができますか?
よろしく
design-patterns - Mathematica が使用するプログラミングパターンの名前
Mathematica 7.0以降、ParallelTry関数[1]があり、複数の関数を並行して評価し、受け取った最初の結果を返します。これは、互いに素なデータ構造に対する検索の並列化に似ています。もう 1 つの一般的な使用例は、特定の問題に対して複数のアルゴリズムを実行し、最初の結果が返されるのを待つことです。
問題は、このスタイルの計算に適切な名前があるかどうかです。結果を見つける関数 (タスク) の 1 つがエウレカを叫ぶこのエウレカ スタイルと呼ぶことしか考えられません。
[1] http://reference.wolfram.com/language/ref/ParallelTry.html
hadoop - MapReduce と Yarn の違い
ストラグラーの問題とこの問題の論文に関して、hadoop と mapreduce について検索してい
ましたが、昨日、Yarn を使用した Hadoop 2 があることがわかりました。
残念ながら、Yarn のストラグラーの問題について話している論文はありませ
ん。一部ストラグラーのMapReduceとYarn?糸はストラグラー問題に苦しんでいますか?
また、MRmaster がリソース マネージャーにリソースを要求すると、リソース マネージャーは MRmaster に必要なすべてのリソースを提供しますか、それともクラスター コンピューティング機能に従っていますか?
本当にありがとう、、