我正在使用 parallel::mclapply 进行一些计算以并行化该过程。我有一个具有 64GB 内存和 28 核 CPU 的高性能计算服务器 (HPC)。并行化后代码运行速度大大提高,但大量内存和 cpu 内核被浪费。我怎样才能使它更有效率?
这是示例代码:
data_sub <- do.call(rbind, mclapply(ds,predict_function,mc.cores=28))
predict_function 包含一个小函数来创建 snaive、naive 或 Arima 方法,这些方法将在逻辑到达上述行之前决定。
以下是我经常在日志中看到的内容:
第一行表明该作业浪费了 51 gig 的 RAM 并且使用了不到一半的 CPU 分配。第三行表示相同的程序以相同的数据运行,但使用的内存超过了分配的内存,尽管 CPU 内核利用不足。
目前在我脑海中浮现的三个问题:HPC 将如何为每个作业分配内存?我可以在我的 R 程序中拆分内存和内核以并行运行两个函数吗?说在 14 个核心中运行 snaive 方法并将其余 14 个分配给 Arima?我怎样才能让我的工作利用所有内存和 CPU 内核来加快速度?
提前致谢