Thanks. This should be resolved in R-devel(r72788) and R-patched
(r72789)
Best,
luke
On Mon, 12 Jun 2017, Berend Hasselman wrote:
In this email to the R-help list:
https://stat.ethz.ch/pipermail/r-help/2017-June/447474.html
and in this question on Stackoverflow:
https://stackoverflow.com/questions/44486643/nleqslv-memory-use-in-r
Andrew Leach has raised a question about the memory usage of my package nleqslv.
In a model with a loop within a function he has experienced continuously
increasing memory usage
by package nleqslv leading to an out of memory condition.
I have been able to reproduce the continuously increasing memory usage with the
following small example.
<code>
library(nleqslv,lib.loc="../nleqslv.Rcheck")
library(pryr)
dslnex <- function(x) {
y <- numeric(2)
y[1] <- x[1]^2 + x[2]^2 - 2
y[2] <- exp(x[1]-1) + x[2]^3 - 2
y
}
xstart <- c(x1=1.5,x2=2)
nsims <- 10
for(test_iter in seq_len(nsims)){
z <- nleqslv(xstart,dslnex,jacobian=NULL)
print(paste("nleqslv iteration",test_iter,"and memory used is",mem_used()))
}
memory.profile()
gc()
print(paste("At end memory used is", mem_used()))
</code>
The final output is
<output>
[1] "nleqslv iteration 1 and memory used is 28921288"
[1] "nleqslv iteration 2 and memory used is 29133256"
[1] "nleqslv iteration 3 and memory used is 29132992"
[1] "nleqslv iteration 4 and memory used is 29134712"
[1] "nleqslv iteration 5 and memory used is 29136432"
[1] "nleqslv iteration 6 and memory used is 29138152"
[1] "nleqslv iteration 7 and memory used is 29139872"
[1] "nleqslv iteration 8 and memory used is 29141592"
[1] "nleqslv iteration 9 and memory used is 29143312"
[1] "nleqslv iteration 10 and memory used is 29145032"
memory.profile()
NULL symbol pairlist closure environment promise
1 8554 194726 4230 1065 6534
language special builtin char logical integer
51374 45 671 9786 8030 37258
double complex character ... any list
2645 1 53795 0 0 18487
expression bytecode externalptr weakref raw S4
1 14662 2233 592 593 1049
gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 416340 22.3 750400 40.1 581181 31.1
Vcells 726127 5.6 1308461 10.0 1191521 9.1
print(paste("At end memory used is", mem_used()))
[1] "At end memory used is 29126472"
</output>
Indeed memory used increases in each pass of the for loop.
I have added these two lines at the top of the code after the library(pryr)
invocation.
library(compiler)
oldJIT <- enableJIT(0)
This resolves the issue in the sense that memory used remains constant after
the first iteration.
Output in the for loop is now:
<output>
[1] "nleqslv iteration 1 and memory used is 24487784"
[1] "nleqslv iteration 2 and memory used is 24495816"
[1] "nleqslv iteration 3 and memory used is 24495816"
[1] "nleqslv iteration 4 and memory used is 24495816"
[1] "nleqslv iteration 5 and memory used is 24495816"
[1] "nleqslv iteration 6 and memory used is 24495816"
[1] "nleqslv iteration 7 and memory used is 24495816"
[1] "nleqslv iteration 8 and memory used is 24495816"
[1] "nleqslv iteration 9 and memory used is 24495816"
[1] "nleqslv iteration 10 and memory used is 24495816"
</output>
My questions are
- is this a bug(let) in the JIT compiler?
- if it isn't what would need to be changed in nleqslv.R in the package source?
(I haven't a clue)
regards
Berend Hasselman
My sessionInfo:
R version 3.4.0 (2017-04-21)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5
Matrix products: default
BLAS:
/Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK:
/Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_IE.UTF-8/en_IE.UTF-8/en_IE.UTF-8/C/en_IE.UTF-8/en_IE.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.4.0
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tier...@uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel