[R-sig-Geo] memory - cannot allocate vector of size 'x'

Roger Bivand Roger.Bivand at nhh.no
Wed Mar 5 08:08:29 CET 2008


On Tue, 4 Mar 2008, Jose Funes wrote:

> Roger,
>
> I am running it in Windows and is 8 bytes. I tried to use the gc() for
> the regression kriging but it did not work, instead I did employ the
> gctorture() that turn "R" to run extremely slow (it is still running,
> almost 8 hours so far, it may finish tomorrow). For the regression
> kriging, I am using 163 data points:
>
> R code: Regression kriging
> ystrk = krige(yststep$call$formula,ystdec3,predictors,vgf1yst)
>
> where:
> yststep: is the regression residual
> ystdec3: are the data points (163 points)
> predictors: are the asciigrid file containing the predictor variables
> (9 raster layers)
> vgf1yst: fitted variogram

But no use of maxdist= or nmax=? I would have said:

g1 <- gstat(formula=yststep$call$formula, data=ystdec3, model=vgf1yst)
ystrk <- predict(g1, newdata=predictors)

anyway, which shows exactly how to resolve the problem - subset ystdec3 
into tiles and patch them together again afterwards (patching may need 
thinking through clearly). I assume that you have now successfully read in 
the predictors? Do I understand that you are calibrating your model on 163 
observations, and predicting for roughly four orders of magnitude more 
grid cells?

gc() can help to clean out garbage sometimes - say in a loop, gctorture() 
really only during development, not in regular use.

Roger

>
> error message:
> In addition: There were 12 warnings (use warnings() to see them)
>
> warning messages:
> 1: Reached total allocation of 1535Mb: see help(memory.size)
> ...
> 3: In slot(value, what) <- slot(from, what) :
> ...
> 8: In slot(value, what) <- slot(from, what) :
> Reached total allocation of 1535Mb: see help(memory.size)
> ...
> 12: In `slot<-`(`*tmp*`, what, value = structure(c(-293438.89990765,  ... :
> Reached total allocation of 1535Mb: see help(memory.size)
>
>
> Is there another way to get around garbage collection than gctorture().?
>
> Sincerely,
>
> Jose
>
>
>
>
> On Tue, Mar 4, 2008 at 3:48 AM, Roger Bivand <Roger.Bivand at nhh.no> wrote:
>> On Mon, 3 Mar 2008, Jose Funes wrote:
>>
>> > Dear members,
>> >
>> > I would like to share some of the problems that I have run into R when
>> > importing ascii files. I described the problem below, if any have
>> > experienced similar issues I will appreciate you support.
>> >
>> > I am working with raster data(maps) and importing it as ascii files to
>> > R. I am stacking 9 layers (10MB~each, total 90MB). However, when
>> > stacking the eight layer I get the following message "Error: cannot
>> > allocate vector of size 10.8 Mb". I did a little of bit of reading
>> > about this, and some suggestions are to increase the memory
>> > allocation. I increased it to 3GB  using the following command:
>> > memory.limit(size=3000) but the problem still persist.
>> >
>>
>>  Which platform? Windows? Its performance is systematically worse than
>>  other OS on the same hardware. When you say 10Mb, is this 8 bytes *
>>  roughly 1.2 million cells? Are you running gc() between calls to
>>  readAsciiGrid() to force garbage collection? While readAsciiGrid() is
>>  working, I think that at least three copies of the data are in memory.
>>
>>  Have you tried using rgdal? Maybe readGDAL() keeps fewer internal copies?
>>  (in readGDAL, that may be at least two copies, but I'm not sure (NAs are
>>  handled by GDAL)). Because input needs to be converted from representation
>>  to representation, it is not possible to avoid multiple copies.
>>
>>
>> > code:
>> > 1. predictorslide2 <- readAsciiGrid("sol_spr_lide2.asc")
>> > ...
>> > ...
>> > 8. predictorslide2 <- cbind(predictorslide2,readAsciiGrid("umca_pr_lide2.asc"))
>> >
>>
>>  It may be possible to get round cbind() copying if that turns out to be
>>  the problem, by taking the SpatialGrid from the first read, putting it
>>  aside, and storing the single columns of the data slots of read data in a
>>  single, pre-allocated data frame. Re-allocating to predictorslide2
>>  successively is not a good idea for large objects - Braun & Murdoch in
>>  their nice book on R programming treat it as a worst case on speed and
>>  memory usage.
>>
>>
>>
>> > Also I got a similar error when running regression kriging:
>> > Error: cannot allocate vector of size 6.7 Mb
>>
>>  Without the command, this isn't informative. Were you using local areas
>>  (maximum distance or # data points)? How large were the data= and newdata=
>>  objects?
>>
>>  Roger
>>
>>
>> > In addition: There were 12 warnings (use warnings() to see them)
>> >
>> > warning messages:
>> > 1: Reached total allocation of 1535Mb: see help(memory.size)
>> > ...
>> > 3: In slot(value, what) <- slot(from, what) :
>> > ...
>> > 8: In slot(value, what) <- slot(from, what) :
>> >  Reached total allocation of 1535Mb: see help(memory.size)
>> > ...
>> > 12: In `slot<-`(`*tmp*`, what, value = structure(c(-293438.89990765,  ... :
>> >  Reached total allocation of 1535Mb: see help(memory.size)
>> >
>> > I will appreciate your suggestions. I have also considered splitting
>> > the data  but would like to explore other solutions.
>> >
>> > Regards,
>> >
>> > Jose Funes
>> >
>> > _______________________________________________
>> > R-sig-Geo mailing list
>> > R-sig-Geo at stat.math.ethz.ch
>> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>> >
>>
>>  --
>>  Roger Bivand
>>  Economic Geography Section, Department of Economics, Norwegian School of
>>  Economics and Business Administration, Helleveien 30, N-5045 Bergen,
>>  Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
>>  e-mail: Roger.Bivand at nhh.no
>>
>>
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no




More information about the R-sig-Geo mailing list