我刚刚测试了一个有和没有并行后端的弹性网络。电话是:
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 秒,第二次耗时 313 秒。但第一次运行最大占用 3.3GB 内存(由 Sun 集群系统报告),第二次占用 22.9GB。我有 30GB 的内存,任务只会从这里变得更加复杂。
问题:1)这是并行计算的一般属性吗?enet
我以为他们共享内存.... 2)在内部使用的同时有没有办法解决这个问题train
?如果doParallel
是问题所在,是否有其他架构可以与%dopar%
--no 一起使用,对吗?
因为我对这是否是预期结果感兴趣,所以这与这个问题密切相关但并不完全相同,但我可以关闭这个并将我的问题合并到那个问题中(或将其标记为重复并指向这个,因为它有更多细节)如果这是共识: