Memory issue in GrADS

Jennifer Adams jma at COLA.IGES.ORG
Wed Mar 5 09:59:36 EST 2008


On Mar 4, 2008, at 5:12 PM, Eric Altshuler wrote:

> Hi Jennifer,
>
> I was under the impression that the following commands had exactly  
> the same effect in grads:
>
> 'define var = expr'
> 'var = expr'
>
> i.e. the 'define' command was optional and it didn't matter whether  
> it was there or not.
That's right. The 2nd expression is an implied define command.

> Is this no longer true in general, or is this caching behavior only  
> for grib2 data?
Define hasn't changed. The cacheing is only for grib2 -- it was  
implemented to alleviate the problems of reading compressed data (see  
earlier post regarding meteograms).

Jennifer

>
> Eric
>
> ----- Original Message -----
> From: "Jennifer Adams" <jma at COLA.IGES.ORG>
> To: GRADSUSR at LIST.CINECA.IT
> Sent: Tuesday, March 4, 2008 4:25:37 PM GMT -05:00 US/Canada Eastern
> Subject: Memory issue in GrADS
>
> Hi, Bob --Â
> I have cc'd gradsusr on this answer because it is of general  
> interest ...Â
>
>
>
>
> GrADS caches grib2 grids in memory. This facilitates the I/O if you  
> make a 2nd display request for a variable -- it will be read from  
> the cache instead of the grib2 file (and therefore won't need to be  
> uncompressed again). The limit of the cache size is (for now) hard- 
> coded in gaio around line 76:
> Â Â #define MAXG2CACHE 500100100
> You can change this and recompile if you want to limit or expand  
> your memory usage. I intend to make grib2 cache size a command line  
> argument at some point. When the cache reaches its max size, it  
> releases the oldest grid in the cache (i.e., the one you read in  
> first). Â You can also release all the memory in the grib2 cache  
> with the 'flush' command.Â
>
>
> Using 'define' with grib2 data is redundant, and it doubles your  
> memory usage -- retrieving a cached grib2 variable is just as fast  
> as retrieving a defined variable. Use 'define' if you think you'll  
> need a variable for longer than it will linger in the cache, or if  
> you are flushing the cache regularly.Â
>
>
> Your script uses 'define' at almost every line, but this is not  
> really necessary. For example,Â
> Â Â  Â "define A=2.53e9"
> Â Â  Â "define B=5.42e3"
>
> Â Â  Â "define Td=B/log(A*0.622/(mix*lev(z+1)))"
> Â could beÂ
> Â Â  Â A='2.53e9'
> Â Â  Â B='5.42e3'
>
> Â Â  Â "define Td="B"/log("A"*0.622/(mix*lev(z+1)))"
>
>
>
> Depending on the complexity of the expressions "A" and "B" you will  
> save a lot of memory if you don't define them at every step but let  
> the GrADS recursive expression handling do the job for you.Â
>
>
> Jennifer
>
>
>
>
>
>
> On Mar 4, 2008, at 2:05 PM, Robert Hart wrote:
>
>
>
> I'm noticing that scripts that worked fine now cause memory  
> allocation errors with GrADS v2a.  Even when I have the correct  
> undefines, the memory usage continues to grow.
>
>
> As an example, please see:
>
>
> http://moe.met.fsu.edu/~rhart/grads-mem
>
>
> This uses the NAM 12km GRIB2 data from, e.g.
>
>
> ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/nam/prod/nam.20080304/ 
> nam.t00z.awphys00.grb2.tm00
> through 84hr
>
>
> By time step 14 or 15, the script has accumulated 1GB of memory and  
> then crashes due to memory allocation errors.
>
>
> This worked fine in 1.94 and earlier.
>
>
> Bob
>
>
>
>
> --
> Jennifer M. Adams
> IGES/COLA
> 4041 Powder Mill Road, Suite 302
> Calverton, MD 20705
> jma at cola.iges.org

--
Jennifer M. Adams
IGES/COLA
4041 Powder Mill Road, Suite 302
Calverton, MD 20705
jma at cola.iges.org



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20080305/64eb8157/attachment.html 


More information about the gradsusr mailing list