問題タブ [parallel-foreach]
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 - isplitVector と foreach のインデックス作成の問題
私は R による並列計算の初心者です。最近、doParallel パッケージを使用して foreach と並列計算を使い始めました。イテレータをチャンクに分割した後にリストのインデックスを作成しようとすると、問題が発生します。
エラーが発生します
反復ベクトルをチャンクに分割しないと、エラーは発生しません。isplitVector が正確に何を返し、リストのインデックスを作成する方法がわかりません。これは私のために働く
繰り返しが多いので、foreach を高速化する最善の方法は、繰り返しをクラスターにチャンクすることだと考えました。この方向の助けは非常に役に立ちます。前もって感謝します。
r - RでSQLクエリが実行されているときにメッセージを表示するにはどうすればよいですか?
パッケージrpostgresqlを多用するRのコードに取り組んでいます。私が使用しているクエリの中には、ダウンロードにかなりの時間がかかるものがあるため、ユーザーに定期的にメッセージ (「ダウンロードが進行中です。しばらくお待ちください..」など) を表示して、プログラムがクラッシュしませんでした。
理想的には、コードを関数の汎用ラッパーとして記述して、途中でユーザーにフィードバックを提供できるようにしたいと考えています (ダウンロードの進行状況、経過時間など)。
たとえば、関数の例があるとします。
フォームのラッパーを作りたい
some_wrapper_function は、ラップされたコードの実行中に定期的な更新を提供します。
これには並列コーディングが必要なようですが、クラスターが少なくとも 1 回は互いに通信する必要があるという問題があります。
何かご意見は?または、これを行う既存の機能はありますか?
r - すべてのジョブが redis サーバーに入るまで doRedis ワーカーが処理を開始しないのはなぜですか
foreach と doRedis を使用する場合、doRedis ワーカーは、処理を開始する前に、すべてのジョブが redis サーバーに到達するまで待機します。すべての前処理が完了する前にそれらを開始することは可能ですか?
私はうまく機能しているイテレータを使用しています-前処理は「ジャストインタイム」に行われ、イテレータが実行されるとジョブデータがサーバーにヒットし始めます。ただし、ワーカーはすべてのジョブがアップロードされるまで待機するだけなので、この動作を利用することはできないようです。
コード例:
この例complex.iter
では時間がかかり、反復する要素が多数あります。process.function()
そのため、すべての前処理が完了する前にワーカーが実行を開始できれば素晴らしいことです。complex.iter
残念ながら、すべての要素で実行されるまで待機しているようです。
を設定し.inorder=F
ました。
この望ましい動作を達成する方法に関する提案はありますか? ありがとう。
r - foreach 使用時のログのとり方 (print または futile.logger)
foreach
ロギングと組み合わせてパッケージを使用したい。私は通常futile.logger
パッケージを使用します。ワーカーに作業が与えられると、ログ情報が失われます (ログ パッケージを foreach に指定する必要があるため、これは奇妙です)。
この投稿を見たことがありますが、foreach を使用していません
パラレルバックエンドについてはあまり気にしません。何でもかまいませんが、ログを機能させるにはどうすればよいですか
r - 関数とパッケージからのものだけをどのようにリストすることができますか
パッケージを使用foreach
していくつかのものを並列化します.export
が、使用する必要があるたびに 5 つの関数を示すのにうんざりしています。
できることはわかっていますforeach(...,.export=ls(.GlobalEnv))
が、これにより大量のデータがワーカーに転送され、速度が低下します (大きなテーブルが定義されている可能性があります)。
したがって、問題は、関数のみをリストするにはどうすればよいかということです.GlobalEnv
私はそれをしました:
しかし、それは醜いです(そしてすべてを与えます)そして私は慣用的な方法があると確信しています
r - R で列を効率的かつ選択的に結合する
私は次のデータを持っています
次の優先順位で国データが入力される新しい列 country_final_str を作成したいと思います。
また、以下を使用して国の所得レベルを特徴付けています。
次の for ループがありますが、100 万件を超えるレコードがあるため、永遠に時間がかかります。
効率を改善する/ for ループを取り除くための考えはありますか? Windows を使用しているため、 と を使用しapply/lapply/tapply
てコードを並列化する試みは失敗しました。doParallel
doSNOW
コラムの質問に対する正解については、@thelatemail による以下を参照してください。国の所得レベルについては、次のことを行いました。
r - Rで並列に何も実行しないforeachを使用した並列randomForest
コードを使用して、一部のデータ x と応答 y の foreach パッケージを使用して、ラップトップの 4 つのコア間で randomForest を並列に適合させようとしています。
ただし、クラスターが以下のように設定されている場合でも機能しないため、randomForest が適合されますが、600 ではなく 200 の木しかありません。
これを修正する方法、または R が複数のコアにアクセスできるように設定を変更する必要があるかどうか疑問に思っていましたか? それが役立つ場合、私はWindows 10ラップトップを持っています。
助けてくれてありがとう!