【问题标题】:R optimParallel uses huge amounts of RAMR optimParallel 使用大量 RAM
【发布时间】:2021-06-20 11:29:29
【问题描述】:

在我的(大型)服务器(具有 255GB RAM 的 Windows)上,我的 optimparallel skript 内存不足,然后因Error in serialize(data, node$con) : error writing to connection 而崩溃。 虽然我会理解数据是否很大并且每个节点都会分配数据,但事实并非如此。

数据不大(大约 200 万行),需要加载 600MB RAM。 使用稍小的数据集,该程序运行良好。 感谢您的帮助!

这里是数据集:data

这是我的脚本:

library(data.table)
sampler <- function(par,veh_id,routt,ccloops){
  veh_id[,multi:=par]
  routt[veh_id,par:=multi,on=.(vehicle_id)]
  sumrout <- routt[,sum(par),.(edge_id,Ndets)]
  sumdet <- routt[,.(Nmodel=sum(par)),.(edge_id,Ndets)]
  routt[,par:=NULL]
  geh_inside_cc <- sumdet[Ndets>0 & edge_id %in% ccloops$edge_id,mean(sqrt(2*(Ndets-Nmodel)^2/(Ndets+Nmodel)))]
  geh_outside_cc <- sumdet[Ndets>0 & !(edge_id %in% ccloops$edge_id),mean(sqrt(2*(Ndets-Nmodel)^2/(Ndets+Nmodel)))]
  # weight geh_inside_cc a bit higher
  return(2*geh_inside_cc+geh_outside_cc)
}

routt <- fread("routt.csv")
veh_id <- fread("veh_id.csv")
ccloops <- fread("ccloops.csv")

library(optimParallel)
cl0 <- makeCluster(5) # set the number of processor cores
# registerDoParallel(cl <- makeCluster(2))
setDefaultCluster(cl=cl0) # set 'cl' as default cluster
clusterEvalQ(cl0, library("data.table"))
opt <- optimParallel(par = rep(1,nrow(veh_id)),veh_id=veh_id,routt=routt, ccloops=ccloops,fn = sampler,lower = 0, upper = 10000,
                     parallel=list(loginfo=TRUE, cl=cl0), control = list(maxit = 5))
stopCluster(cl0)

R 版本:4.1 optimParallel 版本:1.0-2

【问题讨论】:

    标签: r optimization parallel-processing rparallel


    【解决方案1】:

    所以我用虚拟数据测试了你的案例。 首先,我必须在 parallel 中添加 forward 参数(getOption("optimParallel.forward") 对我来说是 NULL)。

    在多会话处理下,您通常必须执行以下附加步骤:创建 PSOCK 集群,根据需要注册集群,在集群工作人员上加载必要的包,将必要的数据和功能导出到集群工作人员的全局环境。因此,数据在所有会话和所有计算要求(RAM 也是)中被克隆/复制。 当我们计算每个会话(集群)的可用内存可能小于 40GB(减去主会话)。

    此外,数据集的大小并不是算法消耗的所有 RAM。例如lm 线性回归可能需要比数据集大小多 10 倍的内存。算法的复杂性通常随着变量(这里是参数)的数量呈指数增长,所以这可能是另一个问题。

    【讨论】:

    • 这有帮助!谢谢!对于您的“附加步骤”:这不是我对 cl0
    猜你喜欢
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多