Hello all,
I am relatively new to R, but enjoying it very much. I am hoping that
someone on this list can help me with an issue I am having.
I am having issues with iterations over nleqslv, in that the solver
does not appear to clean up memory used in previous iterations. I
believe I've isolated the/my issue in a small sample of code:
library(nleqslv)
cons_ext_test <- function(x){
rows_x <- length(x)/2
x_1 <- x[1:rows_x]
x_2 <- x[(rows_x+1):(rows_x*2)]
eq1<- x_1-100
eq2<-x_2*10-40
return(c(eq1,eq2))
}
model_test <- function()
{
reserves<-(c(0:200)/200)^(2)*2000
lambda <- numeric(NROW(reserves))+5
res_ext <- pmin((reserves*.5),5)
x_test <- c(res_ext,lambda)
#print(x_test)
for(test_iter in c(1:1000))
nleqslv(x_test,cons_ext_test,jacobian=NULL)
i<- sort( sapply(ls(),function(x){object.size(get(x))}))
print(i[(NROW(i)-5):NROW(i)])
}
model_test()
When I run this over 1000 iterations, memory use ramps up to over 2.4 GB
While running it with 10 iterations uses far less memory, only 95MB:
Running it once has my rsession with 62Mb of use, so growth in memory
allocation scales with iterations.
Even after 1000 iterations, with 2+ GB of memory used by the R
session, no large-sized objects are listed, although mem_use() shows
2+ GB of memory used.
test_iter lambda res_ext reserves x_test
48 1648 1648 1648 3256
I've replicated this on OS-X and in Windows both on a desktop and a
Surface Pro, however colleagues have run this on their machines and
not found the same result. gc() does not rectify the issue, although
re-starting R does.
Any help would be much appreciated.
AJL
--
Andrew Leach
Associate Professor of Natural Resources, Energy and Environment (NREE)
Academic Director, Energy Programs
Alberta School of Business| 3-20D Business Building
University of Alberta |Edmonton, AB T6G 2R6 | Canada
T. 780.492.8489
E. andrew.leach at ualberta.ca
www.business.ualberta.ca
Follow me on Twitter at @andrew_leach
> On 12 Jun 2017, at 00:16, Andrew Leach <aleach at ualberta.ca> wrote: > > Hello all, > > I am relatively new to R, but enjoying it very much. I am hoping that > someone on this list can help me with an issue I am having. > > I am having issues with iterations over nleqslv, in that the solver > does not appear to clean up memory used in previous iterations. I > believe I've isolated the/my issue in a small sample of code: > > library(nleqslv) > > cons_ext_test <- function(x){ > rows_x <- length(x)/2 > x_1 <- x[1:rows_x] > x_2 <- x[(rows_x+1):(rows_x*2)] > eq1<- x_1-100 > eq2<-x_2*10-40 > return(c(eq1,eq2)) > } > > model_test <- function() > { > reserves<-(c(0:200)/200)^(2)*2000 > lambda <- numeric(NROW(reserves))+5 > res_ext <- pmin((reserves*.5),5) > x_test <- c(res_ext,lambda) > #print(x_test) > for(test_iter in c(1:1000)) > nleqslv(x_test,cons_ext_test,jacobian=NULL) > i<- sort( sapply(ls(),function(x){object.size(get(x))})) > print(i[(NROW(i)-5):NROW(i)]) > } > > model_test() > > When I run this over 1000 iterations, memory use ramps up to over 2.4 GB > > While running it with 10 iterations uses far less memory, only 95MB: > > Running it once has my rsession with 62Mb of use, so growth in memory > allocation scales with iterations. > > Even after 1000 iterations, with 2+ GB of memory used by the R > session, no large-sized objects are listed, although mem_use() shows > 2+ GB of memory used. > > test_iter lambda res_ext reserves x_test > 48 1648 1648 1648 3256 > > I've replicated this on OS-X and in Windows both on a desktop and a > Surface Pro, however colleagues have run this on their machines and > not found the same result. gc() does not rectify the issue, although > re-starting R does. > > Any help would be much appreciated. > > AJL >Hello Andrew, I could replicated same result. I think it?s time to send a bug report to author (Berend Hasselman <bhh at xs4all.nl>).> 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: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices datasets utils methods base other attached packages: [1] nleqslv_3.3 loaded via a namespace (and not attached): [1] compiler_3.4.0 tools_3.4.0