【发布时间】:2023-03-12 18:15:01
【问题描述】:
我在启动此功能时遇到问题:
blocs <- split(df, 1 + (1:nrow(df)) %% ncores)
cl <- makeCluster(ncores)
registerDoParallel(cl)
if (mode == "batch"){
res <- foreach(i = blocs, .combine = "cbind", .export = c("batch_gradient_descent", "sampled_df", "add_constant", "sigmoid", "log_loss_function")) %dopar% {
coefs <- batch_gradient_descent(df, colnames(X), colnames(y), learning_rate, max_iter)
}
return(res)
}
当我使用 1 个核心运行它时,它可以工作。当我使用 2 个或更多内核时,它不会进入我的 foreach 函数,没有任何反应,我也没有错误。 我可能会错过一些东西,但经过大量搜索后,无法找到解决方案!
有人可以给我这个案例的提示吗?
【问题讨论】:
-
你的问题描述不够详细。你怎么知道它没有进入循环?你怎么知道什么都没发生?您应该提供一个最小的、独立且可重现的示例,以便我们对此进行调查。
-
抱歉 Roland,这只是我在 stackoverflow 上的第二篇文章。下次我会尽力而为,会更准确。 Danlooo 帮助了我,而且效果很好!关于您的问题:它没有进入循环,因为我尝试制作一个简单的“print("ok") 并且控制台上没有出现任何内容。
-
并行工作者无法打印到控制台。
标签: r foreach parallel-processing logistic-regression doparallel