並列化されたルーチンdoMC
の並列バックエンドとして Rのパッケージを使い始めました。plyr
並列化自体は正常に機能しているように見えますが (スピードアップのベンチマークはまだ行っていません)、私の問題は、ロギングが非同期になり、異なるコアからのメッセージが混ざり合っていることです。コアごとに異なるログファイルを作成することもできますが、コアごとに異なるラベルを追加するだけでより適切な解決策になると思います。現在log4r
、ログのニーズに合わせてパッケージを使用しています。
MPI を使用しているときに、各プロセッサがランクを取得したことを覚えています。これは、各プロセスを互いに区別する方法でした。これを行う方法はありdoMC
ますか? 私は PID を抽出するという考えを持っていましたが、これは面倒に見え、反復ごとに変化します。
私はアイデアを受け入れますので、どんな提案も大歓迎です。
編集 (2011-04-08):log()
1 つの回答の提案に従いますが、正しいファイルに書き込むために呼び出しごとに個別のクロージャーが必要になるため、現在どのサブプロセスにいるのかを正しく識別するという問題がまだ残っています。 、または単一のlog()
関数を持ちますが、追加するログファイルを決定するロジックが内部にあります。どちらの場合でも、現在のサブプロセスにラベルを付ける何らかの方法が必要ですが、これを行う方法がわかりません。
mpi_rank()
MPI ライブラリに関数に相当するものはありますか?