【发布时间】:2019-07-19 09:29:24
【问题描述】:
我尝试使用 loess() 函数多次拟合 +- 70.000 个值作为两个变量的函数。我想使用这种拟合来消除数据的趋势。我的问题是,一旦我启动 loess 功能,R session 会占用系统上所有可用的内核,这对同一计算集群上的其他用户来说是不考虑的。
相关代码类似于以下内容:
# Approximation of the data
df <- data.frame(y = rpois(70000, rnorm(70000, 10, 2)), # y is count data
x = 50000 - rpois(70000, 100),
z = runif(70000))
# The problematic operation
fit <- loess(y ~ x + z, data = df)
当我在本地计算机上运行此示例时,它只占用 1 个核心,但在集群上它占用尽可能多的核心(最多 48 个)。理想情况下,我会 loess() 仅在 1 个内核上运行。
我试图在loess的代码中追踪任何多核参数,但我找不到。我知道黄土调用stats:::simpleLoess,后者又调用C code,后者又调用Fortran代码。我没有使用 C 或 Fortran 的经验,也无法弄清楚如何限制此函数的 CPU 使用率。
有人对我如何限制 loess 函数的 CPU 使用率有任何建议吗?
【问题讨论】: