問題タブ [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 - リストの各コンポーネントに対してデータ変更の手順を並行して実行する
2 つの data.table オブジェクトを含むリストがあります。アイデアを与えるために、1 つのテーブルには 400,000 行と 7 つの変数があり、別のテーブルには 750,000 行と 12 の変数があります。これらの 2 つのテーブルには同じ列がありません。私はそれらに対して多くの変更 (それぞれに異なる手順) を行います。変更手順には、合計の計算、集計値のパーセンタイルの検索、各グループのケース数、一意の長さなど (それぞれ 20 以上の手順) が含まれます。私が使うdata.table
これらの手順のパッケージ。ただし、それぞれに ~20 ステップ (合計で >40 ステップ) をすべて実行するには、少し時間がかかることがわかります。並列処理を使用してこれを高速化する方法を考えています。これらのステップは、リストのさまざまなコンポーネントで実行されるため、並行して処理できると思います。アイデアをブレインストーミングするために Google で徹底的な検索を行いましたが、役立つ情報は見つかりませんでした。誰かがこれをしましたか?少し光を当ててください、とても感謝しています。ありがとうございました
これまで、私はこれだけのことをしてきました。Result
2 つの data.table オブジェクトを含むリストです。fun1 と fun2 は、各 data.table オブジェクトで実行する必要がある一連の手順をまとめたものです。パフォーマンスに関しては、まだ何の改善も見られません(おそらくオーバーヘッドが原因ですか?わかりません)。
r - R の doParallel - 速度は向上しますが、CPU は常に 90% から 100% まで使用されるわけではありません
私はそれらに対して多くの線形回帰と診断を実行しようとしており、速度を上げるためにR プログラミング言語でdoParallelパッケージを使用しています。
興味深い問題に遭遇しました。予想どおりパフォーマンスの向上が見られましたが、CPU の使用率は一貫していません。
たとえば、コードを実行すると、すべてのコアで CPU 使用率が30 ~ 40%になることがあります。
コードを再度実行すると、その間何も変更しなくても CPU 使用率が90%まで上昇する可能性があります。
どちらの場合も、同時に他に何も実行していません。
何も変更せずにコアが 30% 使用され、別の時間に 90% 使用される理由はありますか?
Windows XP、4GB または RAM を実行しており、Inter(R) Xeon(R) CPU X5650 @ 3.67GHz を使用しています。
私のコードは次のようになります。
r - R 並列計算: コアに分散するオブジェクトを選択します
r-parallel コンピューティングに関する質問があります。私は次のようなものを使用しています:
現在の環境で特定のオブジェクトを特定して、プロセッサ コアに分散し、一部の機能に使用するにはどうすればよいでしょうか? 環境内のオブジェクト全体を別のコアにコピーするのに R は必要ありませんが、選択した一部のオブジェクトのみをコピーします。私のプロジェクトでは、大きな R オブジェクトがあり、RAM の問題を回避するために、それらをコアにコピー/配布する必要はありません。その解決策はありますか?
ありがとう
r - キャレットとメソッド = gamLoess を使用してトレーニングすると R がクラッシュする
以下のコードを実行すると、R がクラッシュします。train の呼び出しで tuneGrid 行をコメント アウトすると、クラッシュは発生しません。別のデータセットでこれを試してみましたが、それでも R がクラッシュします。
コードは次のとおりです。
これは、R Studio を使用する R3.2.1 および 3.2.2 で発生しました。
R gui では、クラッシュも発生します。
c - 並列処理 - Mac OS 10.6.8 で「forking」が失敗する
でfork
失敗するようMac OS 10.6.8
です。アルゴリズムは R でコーディングされており、並列処理には主にforeachパッケージを使用しています。プロセスが並行して実行されていなくても、コードは順次実行すると (foreach
および%do%
) 正常に動作しますが、並行して実行すると (foreach
および) は正常に動作%dopar%
しません。
foreach
1か月前にこの同じマシンを使用しましたが、問題なく動作しました。その間にOSのアップデートが行われました。
エラー メッセージ
ほとんど確率的に来るように見えるいくつかの種類のエラー メッセージを受け取りました。R
また、エラーは、コードがターミナルから実行されるか (環境でコピーして貼り付けるか、または R コンソールから実行されるか)、または R コンソールから実行されるかによって異なりますR CMD BATCH
。
ターミナルで実行すると、
R コンソールで実行すると、次のいずれかが表示されます
また
まったく同じコードで!この 2 番目のエラー メッセージはターミナルで受信したものと同じですが、(print()
関数によって) 画面に出力されるものの数は大きく異なることに注意してください。
私が試したこと
パッケージを更新し
foreach
、コンピューターを再起動しましたが、まったく役に立ちませんでした。私はできる限りのことをしようとし
print
ましたが、このアルゴリズムが何をしているかを追跡するのは非常に困難でした. たとえば、オブジェクトの呼び出しの前の行でステートメントdp
を実行せずに、欠落しているオブジェクトに関するエラーが発生することがよくあります。print
dp
使ってみたの
%dopar%
ですが、CPUが1つしか登録されていません。出力はターミナルでは変化しませんでしたが、コンソールでは変化しました。これで、コンソールは端末と同時に、まったく同じエラーを返します。複数の CPU を要求したときに、複数の CPU が使用されていることを確認しました。
コア数を登録する代わりに代わり
mclapply
に使用しようとしました。foreach
registerDoMC()
registerDoParallel()
補足情報
私のバージョンの R は3.0.2 GUI 1.62 Snow Leopard build
. 私のマシンには16個のコアがあります。
r - R を使用してマシンで使用可能なコア数を検出する
detectCores()
その時点で物理プロセッサの数または使用可能なプロセッサの数を返しますか?
別のスクリプトにも専用のコアをいくつか与えましたが、detectCores()
利用可能なリソースのみを使用するのか、それともすべてのコアに登録するのかはわかりません。
または、getDoParWorkers()
使用可能なコア数を取得するための正しい関数はありますか? 何か助けはありますか?このスレッドを調べましたが、それを検出する正しい方法が見つかりませんでした。
r - randomForestの並列化後に重要性が影響を受けるのはなぜですか?
私は現在、R の randomForest パッケージを使用しています。分類ステップを高速化するために、フォレストを並行して実行することに興味がありました。そのために、「foreach」ビネットに示されているのと同様の方法でパッケージ「foreach」を使用しました。これは、ツリーの総数を使用したいコアの数で分割し、それらをパッケージ「randomForest」の関数「combine」と組み合わせることで構成されます。
「並列」フォレストの結果と、1 つのコアで生成されたフォレストを比較しました。テスト セットの予測能力は似ているように見えますが、「重要度」の値は大幅に減少しており、これは変数選択の次のステップに影響します。
どうしてこうなったのか、正しいのか間違いなのか教えていただきたいです。どうもありがとう!
r - foreach で変数をエクスポートする
%dopar%
foreach パッケージでデータ フレームをエクスポートできません。%do%
と一緒に使用すると機能しますregisterDoSEQ()
が、registerDoParallel()
常に次のようになります。
パッケージのkyphosis
データを使用した再現可能な例を次に示します。rpart
ステップワイズ回帰を少し並列化しようとしています:
r - R で使用する並列処理パッケージを決定するにはどうすればよいですか?
で並列プログラミングを調べていて、関数R
がどのように機能するかをよく理解していますが、、、、、、、などのforeach
違いがわかりませparallel
ん。doparallel
doMC
doSNOW
SNOW
multicore
たくさん読んだ後、これらのパッケージはオペレーティング システムによって動作が異なるようです。マルチコアという言葉を使用するパッケージもあれば、クラスターを使用するパッケージもありますが (それらが異なるかどうかはわかりません)、それ以上ではありません。それぞれにどのような長所と短所があるかを明確にしないでください。
私は Windows で作業しており、レプリケートの重みを並列に使用して標準誤差を計算したいので、一度に 1 つずつレプリケートを計算する必要はありません (n 個のコアがある場合は、一度に n 回のレプリケートを実行できるはずです)。を使って実装できたのですが、一般的に R コミュニティが使ってdoSNOW
いるように見えるので、使い方が間違っているのではないかと思います。plyr
doMC
doSNOW
よろしく、カール