問題タブ [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 - foreach ループの入れ子 R
これに非常によく似たコードがあります:
各ランダム行列は互いに独立して生成することができ、各閾値行列は互いに独立して生成することができるが、閾値行列はランダム行列に依存する。そのようなコードに対してネストされた並列化を行うにはどうすればよいでしょうか? 並列に実行するループを 1 つだけ選択する必要がありますか?
ありがとう。
r - foreach ループでの mclapply の R エラー
この投稿 hereに基づいて、スクリプトを作成しようとしました。
最初は機能しましたが、現在エラーコードがスローされています。
何が起こっているのか分かりますか?mclapply を foreach ループに入れることさえできますか?
編集:これはクラスターではなく、単一の8コアマシン上にあるとも言いたいです。
r - R 並列共有メモリ オブジェクト (Windows)
私は大きなdata.tableを持っています。各並列プロセスはそこから読み取り、データを処理し、はるかに小さい data.table を返します。大きな DT をすべてのプロセスにコピーしたくないのですが、パッケージ内の%dopar%
関数をコピーする必要があるようです。foreach
オブジェクトをすべてのプロセス (ウィンドウ内) で共有する方法はありますか? つまり、 以外のパッケージを使用しますforeach
。
サンプルコード
(並列を使用せずにdata.tableでこれを行うより良い方法には興味がありません。これは、サブプロセスが処理するすべてのデータを読み取る必要があるが、決して変更しないというケースを示すためです)
r - R での並列処理 ---「SNFtool」というパッケージはありません
「並列」パッケージを使用して R で並列コードを実行したいのですが、これが私のコードです。
私が得ている特定のエラーは次のとおりです。
ただし、パッケージ「SNFtool」があり、Rstudio および R からコマンド ラインからロードできます。この問題は、並列プロセスを使用してスクリプトを実行する場合にのみ発生するようです。
r - R でネストされた並列プロセス - Foreach ループ内で ParSapply を使用する
doParallel パッケージを使用していparSapply ()
て、内部で使用したいのですForeach loop
が、他の並列ループ内で並列関数を使用する方法がわかりません。
このエラーが発生しました:
r - foreach で R のマルチコアを使用する for ループ
コードの開始時に供給される複数のユーザー定義関数で構成される非常に長いコードがあります。スクリプト全体はfor
ループ内にあり、csv ファイルを 1 つずつ読み取り、それらを分析し、反復ごとに 2 つの csv ファイルと PNG を出力します。平均して、コードはファイルごとに約 18 秒かかり、通常、一度に分析されるファイルは約 150/200 です。
これには時間がかかるので、PC の 8 コアを活用したいと考えています。
メインfor
ループを に変更しforeach
て を追加しまし%dopar%
たが、コードが機能しません。
例を次に示します。
問題は、ロードされた他のパッケージがforeach
ループで使用できないことだと思います。この場合、どうすればこれを修正できますか? 第 2 に、これは以前にループの外でロードされたソース コード ファイルが使用できないことを意味するのでしょうか? つまり、私のユーザー定義関数ですか?
ポイントを見逃しているかもしれませんが、まだ理解していない、これを行うためのより簡単な方法があると思います。アドバイスをいただければ幸いです。
r - R foreach: 単一マシンからクラスターへ
次の (簡略化された) スクリプトは、UNIX クラスター (4 つの仮想コア) のマスター ノードで正常に動作します。
16 * 4
クラスター内の 16 個のノード (合計で仮想コア)を活用したいと考えています。
で指定された並列バックエンドを変更するだけでよいと思いますmakeCluster
。しかし、どうすればいいですか?ドキュメントはあまり明確ではありません。
このかなり古い (2013) 投稿http://www.r-bloggers.com/the-wonders-of-foreach/に基づいて、デフォルトのタイプを変更する必要があるようです (sock
またはMPI
- どちらが unix で動作しますか? )
編集
foreach の作成者によるこのビネットから:
デフォルトでは、doParallel は Unix ライクなシステムではマルチコア機能を使用し、Windows では Snow 機能を使用します。マルチコア機能は、コンピューターのクラスターではなく、単一のコンピューターでのみタスクを実行することに注意してください。ただし、スノー機能を使用して、Unix のようなオペレーティング システム、Windows、またはその組み合わせを使用して、クラスターで実行することができます。
とはyou can use the snow functionality
どういう意味ですか? どうすればいいですか?
r - ランダム フォレストのトレーニングを高速化するにはどうすればよいですか?
いくつかのランダム フォレスト (回帰用) をトレーニングして、それらを競合させ、どの機能選択とどのパラメーターが最適なモデルを提供するかを確認しようとしています。
しかし、トレーニングには非常に時間がかかるようで、何か間違ったことをしているのだろうかと思っています.
私がトレーニングに使用しているデータセット (以下で呼び出されtrain
ます) には 217,000 行、58 列があります (ランダム フォレストで予測子として機能するのはそのうちの 21 のみです。クラスのブール値を除いて、それらはすべてnumeric
orです) .出力は) です。integer
character
y
numeric
次のコードを 4 回実行して、値4
、100
、500
、2000
を指定しましたnb_trees
。
それぞれのトレーニングにかかった時間は次のとおりです。
私の会社のサーバーには 12 コアと 125Go の RAM があるので、この回答に従って、トレーニングを並列化できると考えました(ただし、doParallel
パッケージを使用したのdoSNOW
は、.私が見た場所も見つけられませんでしたdoParallel
、申し訳ありません)。
実行すると、並列化されていないコードよりも時間がかかりません。
とはいえ、まだまだ時間がかかると思いますよね?ツリーを最終的なフォレストに結合するのに時間がかかることは承知しているので、12 コアで 12 倍高速になるとは思っていませんでしたが、〜 2 倍しか高速ではありません...
- これは正常ですか?
- そうでない場合、実行時間を根本的に短縮するために、データやコードでできることはありますか?
- そうでない場合は、サーバーの担当者にもっと高速にする必要があることを伝えるべきですか?
回答ありがとうございます。
ノート :
- このサーバーを使用しているのは私だけです
- 次のテストでは、ランダム フォレストで使用されていない列を削除します。
randomForest(predictors,decision)
の代わりに呼び出すことで実行時間を改善できることにかなり遅れて気づきましたrandomForest(decision~.,data=input)
。これからもそうしますが、上記の質問はまだ有効だと思います。
r - Parallel::mclapply で 800 万行のデータを効率的に実行するには?
次のコードを使用して、約 800 万要素の文字ベクトルを分割しようとしました
ベクトルorders_largest1stGroup$Time
は次のようなものです
ただし、15 分以上経過しても、まだ実行中です。だから、私のコードやそれを行う私のアプローチについて何かが正しくないのではないかと思います.
誰か見て、このコードを高速に実行する方法を教えてもらえますか?