問題タブ [domc]
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.
r - RにおけるdoMCとdoParallelの違い
関数に関する RのdoParallel
との違いは何ですか? unix ライクなウィンドウのみをサポートしますが、unix ライクなウィンドウをサポートします。言い換えれば、なぜ直接置換できないのでしょうか? ありがとうございました。doMC
foreach
doParallel
doMC
doParallel
doMC
更新:
doParallel
は に基づいて構築されていますparallel
。これは基本的に と の合併でmulticore
ありsnow
、システムに適したツールを自動的に使用します。その結果、doParallel
マルチシステムをサポートするために使用できます。つまり、 を使用doParallel
して置き換えることができますdoMC
。
参照: http://michaeljkoontz.weebly.com/uploads/1/9/9/4/19940979/parallel.pdf
registerDoParallel(ncores=3)
ところで、との違いは何ですか
クラスターを自動的に停止できるようですregisterDoParallel(ncores=3)
が、2 つ目は自動的に停止せず、必要stopCluster(cl)
です。
参照: http://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf
r - この foreach/dopar 関数が、要求したすべてのコアを使用しないのはなぜですか?
と を使用しようとしてdoMC
いforeach
ます%dopar%
。関数は次のとおりです。
以前にコアをセットアップしましたが、別の関数が上記の関数を呼び出しています (この情報は以下に投稿されていますが、問題ではないと思います)。 getDoParWorkers()
は、意図したとおりに 7 つのコアが割り当てられたことを報告しています。このcat
ステートメントは、出力に関する限り、2 つの「ループ」が正しく機能していることを確認します。ただし、使用するコアは 1 つだけです。誰でも理由がわかりますか?Mac OSX 10.10.2 および R 3.2 (2015-03-15 r67992)。最後に、 を使用doParallel
してすべてを制御すると、同じ結果が得られます。
すべてをセットアップする手順:
r - R foreach 並列ループの値が保存されない
次のダミーコードを実行する場合:
次の出力が表示されます。
f
ループで割り当てられた値がforeach
保存されないのはなぜですか?
特に、ループの後で と がゼロf[1]
にf[2]
等しいのはなぜですか?foreach
ありがとう!
r - R でのマルチコアからマルチノードへの移行
ノードあたり 32 コアのクラスターで R ジョブを実行することに慣れてきました。現在、ノードあたり 16 コアのクラスターを使用しています。一度に複数のノードを使用してパフォーマンスを維持 (または改善) したいと考えています (私が行っていたように)。
ダミーの販売スクリプトとダミー関数 (以下) からわかるように、単一ノードでの並列化は非常に簡単です。これを複数のノードに拡張するのも同様に簡単ですか? その場合、スクリプトをどのように変更しますか?
R スクリプト:
シェルスクリプト:
(シェル スクリプトは によって送信されますqsub script.sh
)
r - foreach パッケージだけでなく doParallel / doMC の利用
これまでに見つけたすべての公式チュートリアルdoParallel、doParallel-Vignette、doMC、doMC-Vignetteは、 と組み合わせて並列計算を使用する方法のみをカバーしていforeach
ます。「シーケンシャル」コードも高速化する方法はありますか?
1 つのファイルを複数のファイルに分割し、各ファイルを異なるインスタンスで実行するようなものだと想像してくださいR
。例えば
前もって感謝します!
(R v.3.2.1
、Rスタジオv.0.99.451
)
r-caret - キャレットは並行して実行されません
実際のキャレットの並列化は、R、caret、および doMC パッケージに依存します。Parallelizing Caret codeで説明されているように
私と同じような環境で働いている人はいますか?Rキャレットの並列化が正しく機能する最大Rバージョンは何ですか?
更新1:私のコードは次のとおりです:
更新 2: コマンド ラインから実行すると、コアが 1 つしか機能しない これらのスクリプトを Rstudio から実行すると、 top 経由で 4 つのプロセスが表示されるため、並列が機能します。しかし、この1秒後にエラーが発生します:
更新 4 :
こんにちは、問題は終了した R セッションにあったようです。AWS インスタンスを起動するたびに、R エンジンを更新して R コードを実行しました。Rstudio ブラウザーを更新するたびに、 Session -> Restart R を実行します。走るらしい。Ubuntuコマンドラインからスクリプトを実行する場合と同じかどうかを確認しています。
通常は終了せずに実行されます。データ レベルでキャレットを平行にします。これは、異なるプロセスで各リサンプルを処理できることを意味します。しかし、サンプルがまだ大きい場合 (100,000 / 2 (フォールド数 = 2) X 2,000 フィーチャ)、これを各プロセッサ ユニットで完了するのは難しい場合があります。私は正しいですか?
並列処理はアルゴリズム レベルで行う必要があると思います。これは、各アルゴリズムの実行が複数のコアで実行される可能性が高いことを意味します。そのようなアルゴリズムの実装がキャレットで利用可能な場合???
r - ローカルのいくつかのコアよりもクラスターで並列コードの実行が遅くなる理由は何ですか?
シリアルで正常に実行され、ローカル マシン (3 コア) で並列で正常に実行されるプロセスが、クラスター上の多くのコアで実行されると速度が低下する可能性がある理由をトラブルシューティングしようとしています。コードはローカルで問題なく動作するため、動作しない最小限の例を実際に作成することはできません。
各ワーカーの出力をファイルに保存するようにスクリプトを変更しました。後でファイルのゴブを集約します。何かが欠けていない限り、コミュニケーションと集約ではないと思います。
これが私の出力です。かなり複雑なプロセスのラッパー関数を示しています。これは、実行する前に一度単独で実行しますplyr
。
次に、コードを並行して実行すると、すべてが遅くなります。
この種の動作を引き起こす可能性のあるものにはどのようなものがありますか? 既に述べたように、関数は出力を破棄し、シリアル実行時にベンチマーク速度を維持し、ローカル マシンの 3 つのコアで並列に正常に動作します。
「経過」時間が「ユーザー」時間のほぼ正確に 24 倍になるのはなぜですか。(とにかく「ユーザー」時間は何ですか?)
編集コメントの質問に答えて、並列と直列のパフォーマンスを直接比較します。並列は実際には遅いです。
Edit2 コードはログイン ノードで正常に動作します。各ジョブは連続して 6 秒かかり、24 の並列ジョブは 12 秒かかります。では、計算ノードは一般的にログイン ノードとどのように異なるのでしょうか?
Edit3
Solvedibrun
ジョブを複数のスレッドに送信するシェル スクリプト
を使用していることがわかりました。ただし、R は、R ジョブを呼び出すシェル スクリプトからではなく、R 内から並列バックエンドが呼び出される「スレッド並列処理」と呼ばれるものを使用します。バッチ処理コマンドから複数のスレッドを呼び出すと、クラスターは各コアで並列ジョブを実行します。したがって、コア数のおおよその倍数である速度。したがって、話の教訓: 共有リソース システム上の 1 つのスレッドについてのみバッチ処理システムに要求し、使用される実際のコアの数を R に処理させます。そして、この問題はおそらく、バッチ処理システムを備えた共有スーパーコンピューターにのみ関連します。