[R] seg fault ==> Use more heap memory (R --vsize ...)
Martin Maechler
maechler at stat.math.ethz.ch
Fri Mar 5 17:54:05 CET 1999
Lorenz, I've used your example code, somewhat ``improved'' by diagnostic
printing.
library ("modreg")
.Random.seed <- 0:3
n <- 500
while (TRUE) {
cat("\nn=", n, ":")
x <- runif(n)
y <- 3 + 4*x + rnorm(n)/10
cat(" time:", unix.time(loess(y ~ x, span= 1)),"\n")
cat(" gc() free:"); print(as.vector(gc()[,"free"]))
n <<- n+500
}
For me, it ends as
............
4500 time: 78.2 0.02 141 0 0
gc() free:Ncells Vcells
83129 213516
5000 time: 96.8 0 174 0 0
gc() free:Ncells Vcells
83129 212516
5500 Error: heap memory (2048 Kb) exhausted [needed 85 Kb more]
See "help(Memory)" on how to increase the heap size.
Timing stopped at: 116.42 0.02 210 0 0
Execution halted
Problems are:
1) loess() does allocate memory dynamically in
``not so standard'' ways, namely using standard C's Calloc(.)
--> see loess_workspace(.) in src/library/modreg/src/loessc.c
instead of R's C_alloc() function [from src/main/memory.c]
(yes yes, if this API would have been documented, Brian would
have used it when writing loessc.c for the modreg package..)
and hence gc() does not really show how much memory is used..
However the error message above clearly leads you in the right
direction, namely ?Memory (see below).
2) loessf.f (same directory) is really the heart of the algorithm,
However it is (modified) output of ratfor or
something like it, and not really well documented;
Tons of ehg1<nm> routines which have no helpful names,
and unfortunately don't have too many comments....
Solution for you:
--------
Give more vector memory to R :
In R versions <= 0.63.2, use e.g.,
R --vsize 10
(uses 10 MBytes of vector heap memory).
>From the just released version 0.63.3 on, the syntax is
R --vsize 10M
(idea behind: Both "nsize" and "vsize" are given in single units;
Bytes for vsize and "Cons Cells" (= 4 Bytes) for nsize)
Martin
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list