Hello everyone, I have general question about parallel programming. I'm doing simulations that involves bootstrap. For now I'm using parLapply only for bootstrap part and then function "replicate" for simulations. It is very long function, so here is a short version: simfun=function(data,n,alpha){ #code{} cl <- makeCluster(detectCores()) clusterExport(cl,c("data"), envir=environment()) clusterExport(cl,c("n"), envir=environment()) q=1000; #Bootstrap - zero-corrected stepwise selection repl=*parLapply*(cl=cl,1:q,function(i,dataB=data,smpl=n,...){ dataB <- dataB[sample(nrow(dataB),size=n,replace=TRUE),] m1=glm(y~x1+x2+x3+t,family=binomial,data=dataB) S=step(m1,direction="backward",trace=F); Sstep=summary(S);Sstep if (any(rownames(Sstep$coefficients)=="t")==TRUE){ beta.Step.zero=Sstep$coefficients[paste0("t"), ][1] }else{ beta.Step.zero=0; } return(beta.Step.zero) }) stopCluster(cl) beta.Step.zero.v=(do.call("rbind", repl)); beta.Step.zero=mean(beta.Step.zero.v);beta.Step.zero lower.step.zero=quantile(beta.Step.zero.v, c(.025, .975))[1];lower.step.zero upper.step.zero=quantile(beta.Step.zero.v, c(.025, .975))[2];upper.step.zero Ind.Step.zero=as.integer(bt > lower.step.zero & bt < upper.step.zero); Len.Step.zero=upper.step.zero-lower.step.zero; #more code{} return(list(Ind.Step.zero=Ind.Step.zero,Len.Step.zero=Len.Step.zero,lower.step.zero=lower.step.zero,beta.Step.zero=beta.Step.zero,upper.step.zero=upper.step.zero)) } simN=1000; repl=*replicate*(simN,simfun(data=data,n=n,alpha=0.025)) For now this code works in waves, each step in replicate it starts to use all CPU and then stops. Is there the way to convert such function to 100% parallel programming function? Or any way to make it faster? Thank you in advance. Ariel -- *I like to pretend I'm alone*. *Completely alone*. *Maybe post-apocalypse or plague*... *Whatever*. *No-one left to act normal for. No need to hide who I really am. It would be... freeing*. *...* [[alternative HTML version deleted]]