並列バックエンドの有無にかかわらず、Elastic Net をテストしました。呼び出しは次のとおりです。
enetGrid <- data.frame(.lambda=0,.fraction=c(.005))
ctrl <- trainControl( method="repeatedcv", repeats=5 )
enetTune <- train( x, y, method="enet", tuneGrid=enetGrid, trControl=ctrl, preProc=NULL )
並列バックエンドを登録せずに実行し (呼び出しが終了し%dopar%
たときに警告メッセージを受け取りましたtrain
)、7 コア (8 個中) を登録して再度実行しました。最初の実行には 529 秒、2 番目の実行には 313 秒かかりました。ただし、最初の実行には最大 3.3 GB のメモリ (Sun クラスター システムによって報告された)、2 番目の実行には 22.9 GB が必要でした。私は 30GB の RAM を持っていますが、タスクはここからさらに複雑になります。
質問: 1) これは並列計算の一般的な特性ですか? 彼らはメモリを共有していると思いました.... 2)enet
内部をまだ使用している間にこれを回避する方法はありtrain
ますか?問題がある場合、-いいえでdoParallel
使用できる他のアーキテクチャはあり%dopar%
ますか?
これが期待される結果であるかどうかに興味があるため、これは密接に関連していますが、この質問とまったく同じではありませんが、これを閉じて質問をその質問にマージしても問題ありません(または重複としてマークしてこれは、これがより詳細であるためです)それがコンセンサスである場合: