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

並列処理は、単なる並行処理とは対照的に、並列に実行されるすべてのスレッドレベルおよび/または命令レベルのタスクを開始/実行/終了することが保証され、同時に実行されるコードパスの完了を保証します。

2
xargsを使用してプログラムを並行して実行する
私は現在、現在のスクリプトを持っています。 #!/bin/bash # script.sh for i in {0..99}; do script-to-run.sh input/ output/ $i done xargsを使用して並行して実行したいと思います。私が試してみました script.sh | xargs -P8 ただし、上記の実行は一度に1回だけ実行されます。-n8でも運がありません。スクリプトのforループで実行される行の最後に&を追加すると、スクリプトを一度に99回実行しようとします。一度に8つだけ、合計100までループを実行するにはどうすればよいですか。

5
リストに追加するParallel.ForEach
(ネットワークによって)リモートサイトに接続し、汎用リストを返す複数の関数を実行しようとしています。しかし、私はそれらを同時に実行したいと思います。 例えば: public static List<SearchResult> Search(string title) { //Initialize a new temp list to hold all search results List<SearchResult> results = new List<SearchResult>(); //Loop all providers simultaneously Parallel.ForEach(Providers, currentProvider => { List<SearchResult> tmpResults = currentProvider.SearchTitle((title)); //Add results from current provider results.AddRange(tmpResults); }); //Return all combined results return results; } 私が見ているように、「結果」への複数の挿入が同時に発生する可能性があります...これによりアプリケーションがクラッシュする可能性があります。 …


3
std :: transformを並列実行ポリシーで使用できますか?
間違えなければ 、入出力イテレータと同じ範囲を使ってその場でstd::transform実行させることができます。私がいくつかのstd::vectorオブジェクトを持っていると仮定してvec、私は書くでしょう std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) 適切な単項演算を使用しますunary_op。 C ++ 17標準を使用しstd::execution::parて、最初の引数としてinを付けて、変換を並列実行したいと思います。これにより、関数がのcppreference記事のstd::transformオーバーロード(1)から(2)に変わります。ただし、このオーバーロードへのコメントは次のように述べています。 unary_op[...]終了反復子を含むすべての反復子を無効にしたり、関係する範囲の要素を変更したりしてはなりません。(C ++ 11以降) 「要素を変更する」とは、実際にアルゴリズムを使用できないことを意味しますか、それとも、誤って解釈した別の詳細について話しているのですか?

3
Pandasでグループ化されたDataFrameにPython関数を適用する-計算を高速化するための最も効率的なアプローチは何ですか?
私は非常に大きなPandas DataFrameを処理しています-私のデータセットは次のdf設定に似ています: import pandas as pd import numpy as np #--------------------------------------------- SIZING PARAMETERS : R1 = 20 # .repeat( repeats = R1 ) R2 = 10 # .repeat( repeats = R2 ) R3 = 541680 # .repeat( repeats = [ R3, R4 ] ) R4 = 576720 # .repeat( repeats …

1
Haskellでの並列「any」または「all」
私が何度も遭遇したパターンは、値のリストをテストすることで、値のリストをチェックし、要素の一部またはすべてが渡されたかどうかを確認する必要があるパターンです。典型的な解決策は、単に便利なビルトインを使用することであるallとany。 問題は、これらが連続して評価されることです。多くの場合、いずれかのスレッドがの「False」または「True」を見つけると、プロセスの完了と並行して評価する方がはるかに速くなります。プロセス間通信が必要であり、これを実装するのに十分なControl.Concurrentのどこにもまだ理解していないため、Control.Parallelを使用して短絡動作を実装できないと確信しています。allany これは数学ではかなり一般的なパターンです(例:Miller-Rabin Primality)ので、誰かがおそらくすでにこの問題の解決策を考えているように思いますが、明らかな理由により、「並列または/および/すべて/リスト上のすべて」をグーグル検索しますhaskell」は、関連する結果を返しません。

1
std :: reduceとstd :: accumulateのどちらを選択するのですか?
std::accumulateそして、std::reduceほぼ同じことを行います。 の要約std::reduceはそれをすべて言います: similar to `std::accumulate`, except out of order 多くの場合、これらの関数は同じ最終結果をもたらし、同じ全体的な機能を発揮します。非常に重い負荷計算などを行っている場合はstd::reduce、並列化を試すことができます。つまり。ここで鳥の観点から見た従来の知恵は何ですか?明示的に最適化しない限り、常に鈍いstd :: accumulateに固執する必要がありますか?またはデフォルトで使用する必要がありますstd::reduceか? 場合はstd::reduce、少なくとも速さとして常にある(選択されたデフォルト/なし実行ポリシーを持つ)std::accumulate(少数の命令保存)、私は順序が厳しいときに累積にのみ使用されるべきだと思います。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.