【问题标题】:Close connections to Julia from under R从 R 下关闭与 Julia 的连接
【发布时间】:2020-07-14 23:24:24
【问题描述】:

在我的R 代码中,我使用MixedModels Julia 包。
我使用JuliaCall 包将Julia 集成到R 中。
我使用非常大的数据集(~1 GB~4x10^6 观察结果)并且在建模步骤(mixed models)分配了很多 RAM(~80 GB),其中大部分在结束后不会返回系统的计算。

R 环境中获得建模结果后,如何关闭Julia 下的连接(或关闭Julia)?同时,R 会话不应中断,因为在计算完混合模型后,其他函数应在管道中执行。
此操作可以帮助向系统释放一定量的内存(我在纯 Julia 上运行代码,在 Julia 退出后大约 70 GB 被返回给操作系统。当我在 R 上运行代码时,Julia 占用的 RAM 在管道计算后不会返回给操作系统已完成)
(平台:x86_64-pc-linux-gnu)。

【问题讨论】:

  • 这个问题似乎和你使用 JuliaCall 的方式有关。如果没有最少的工作示例,可能很难提供建议。

标签: r connection julia mixed-models


【解决方案1】:

如果您将 R 中的 Julia 代码作为函数调用,则可以将已计算的参数元组返回给 R,而不需要数据。如果是这样,那么,在从 Julia 返回之前,您可以将所有对数据和其他大内存引用变量的引用设置为 0,然后收集垃圾,例如。如果

a = rand(1000, 1000, 100)
a = 0  # destroy reference since Julia reference counts

然后手动调用垃圾收集器:

GC.gc()

这假设您不再需要 Julia 变量引用的内部数据,如果您想要的只是模型的参数,这很可能。

【讨论】:

  • 如果从 R 调用会搞乱垃圾收集,那么这是一个错误。我想您可以将 R 数据写入 CSV 文件并通过 R 中的 exec() 运行 julia 程序,让 Julia 从 CSV 读取数据并将参数写入另一个文件,然后从 R 读取。
猜你喜欢
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
相关资源
最近更新 更多