问题描述
使用rstan
,我正在运行一个并行使用4个内核的代码。我可以使用一台具有32个内核的计算机,并且我需要在不同的数据集上运行3个相同代码的实例,并在相同的数据集上运行3个稍微不同的代码的实例,总共需要6个模型。我很难确定实现此目标的最佳方法。理想情况下,计算机将在每个模型上运行4个内核,一次总共运行24个内核。
我之前已经使用过parallel
包很多次,但是我认为它不能处理这种“并行并行”。我也知道RStudio的Jobs功能,但是rstan
的优点之一是它以交互方式向您显示链的进度,因此理想情况下,我希望能够看到这些更新。是否可以通过同时打开6个不同的RStudio会话来完成?我尝试一次运行两个,但是我不确定它们是否也可以并行运行,因此任何澄清都很好。
解决方法
我建议改用批处理作业。原则上,由于您没有那么多模型,您可以简单地尝试编写 9 个不同的 R 脚本并将它们存储为,例如,model1.R、model2.R、...、model6.R。这样,您就可以尝试在命令行中提交作业,如下所示:
R CMD BATCH --vanilla model1.R model1.Rout &
这将以批处理模式运行第一个脚本并将标准输出输出到日志文件 model1.Rout。这样,您只需打开该文件即可检查作业的状态。当然,您需要为每个模型运行上述命令。