[Thread Prev][Thread Next][Index]

Re: [ferret_users] ,return=lend and constants



Hi,


On 10/17/2012 8:43 PM, Russ Fiedler wrote:
Ryo,

It looks to be related to the new E and F axes.

Defining refp to be on the same grid as salt and temp

let refp = 0*salt

works with V6.82. 

Russ

It turns out that this is something we're seeing for this particular grid because of the addition of the E and F axes, but it comes from the methods that Ferret has always used for figuring out the grid of an _expression_.

What happens when Ferret is getting the grid of an _expression_ is that we work through all the different items in the _expression_, like salt, temp, refp, 0, and figure out what their grids are.  The 0 in
   let den1 = RHO_UN(salt,temp,0) 
is just a constant so its "grid" is normal to all axes in all grids. When we reconcile the grid of "0" with the grids of "temp" and "salt" the resulting grid for den1 has the XYZT axes of salt and temp, and normal axes in the E and F directions.

The grid of "refp" however, is the abstract grid. That makes it possible to reconcile it with any other grid, but it is not the same as the normal grid.

When we reconcile the grid of "refp" with the grids of "temp" and "salt" the resulting grid for the _expression_
   let den2 = RHO_UN(salt,temp,refp)
is a grid with the XYZT axes of salt and temp, and abstract in E and F.  Ferret still doesn't have full info on the grid of den2, so it decides it needs to evaluate salt, temp, and refp before it can give back the information that the length of the T axis is 12.  We're getting the error message because the full XYZT grid of SALT doesn't fit into the amount of memory currently allocated.


The same sequence of events would have happened in 4D Ferret, if the  original grids of SALT and TEMP were 3d, because then the 4th dimension of the grid would be an abstract axis when working with den2.

Do the same example using levitus_climatology, and ask for the length of the X axis.  Using 4D Ferret, we'll use "set mode diagnostic" which shows the grids Ferret is creating as it goes along.
> ferret_v672
        NOAA/PMEL TMAP
        FERRET v6.72 
        Linux 2.6.18-274.el5PAE 32-bit - 09/13/11
        19-Oct-12 13:38    

yes? use levitus_climatology
yes? let refp = 0
yes? let den1 = RHO_UN(salt,temp,0)
yes? let den2 = RHO_UN(salt,temp,refp)

yes? set mem/siz=1        ! set the memory size small to be sure we run into the limit
yes? set mode diagnostic  ! lets us see the grids Ferret is using

yes? say `den1,return=iend`  ! Get the grid of the first variable. Its T axis is NORMAL

 getgrid EX#1     C:  5 I:    1    1  J:    1    1  K:    1    1  L:    1    1
 getgrid DEN1     C:  7 I:    1    1  J:    1    1  K:    1    1  L:    1    1
 allocate dynamic grid GMS1            XAXLEVITR YAXLEVITR ZAXLEVITR NORMAL
 allocate dynamic grid GMS1            XAXLEVITR YAXLEVITR ZAXLEVITR NORMAL
 !-> MESSAGE/CONTINUE 360
360

Now try den2, with variables salt, temp, and refp.  The grid has an ABSTRACT time axis, and so we get into the same situation.

yes? say `den2,return=iend`
 dealloc  dynamic grid GMS1            XAXLEVITR YAXLEVITR ZAXLEVITR NORMAL
 getgrid EX#1     C:  5 I:    1    1  J:    1    1  K:    1    1  L:    1    1
 getgrid DEN2     C:  7 I:    1    1  J:    1    1  K:    1    1  L:    1    1
 getgrid REFP     C:  9 I:    1    1  J:    1    1  K:    1    1  L:    1    1
 allocate dynamic grid (G002)          XAXLEVITR YAXLEVITR ZAXLEVITR ABSTRACT
 allocate dynamic grid (G002)          XAXLEVITR YAXLEVITR ZAXLEVITR ABSTRACT
 dealloc  dynamic grid (G002)          XAXLEVITR YAXLEVITR ZAXLEVITR ABSTRACT
 getgrid EX#1     C:  5 I:    1    1  J:    1    1  K:    1    1  L:    1    1
 allocate dynamic grid (G002)          XAXLEVITR YAXLEVITR ZAXLEVITR ABSTRACT
 eval    EX#1     C:  4 I:    1  360  J:    1  180  K:    1   20  L: -999 -999
 eval    DEN2     C:  6 I:    1  360  J:    1  180  K:    1   20  L: -999 -999
 **ERROR: request exceeds memory setting: 2 Mwords were requested.
 *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
 *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.



 

On Thu, 2012-10-18 at 12:55 +1100, Ryo Furue wrote:
Ferret users,

Has anybody seen this behavior? Is this a bug?  Basically,
"return=lend" tries to allocate a lot of memory in some cases.

yes? set data bug.nc
yes? let refp = 0
yes? let den1 = RHO_UN(salt,temp,0)    !! Good
yes? let den2 = RHO_UN(salt,temp,refp) !! Bad
yes? say `den1,return=lend`
 !-> MESSAGE/CONTINUE 2
2
yes? say `den2,return=lend`
 **ERROR: request exceeds memory setting: 10 Mwords were requested.
[ . . . remaining error messages elided . . .]

The dataset bug.nc contains salt(i,j,k,l) and temp(i,j,k,l)
with l = 1:2.  I'm attaching the results of "show grid" below.

If you are interested and you cannot reproduce this error,
I'll send the dataset to you.

I'm currently using
FERRET v6.81 Linux 2.6.32-279.1.1.el6.x86_64 32-bit - 07/23/12

The same script didn't cause this error some versions ago.

Regards,
Ryo
--------------------------------
yes? show grid den1
    GRID GCF1
 name       axis              # pts   start                end
 LONGITUDE_T LONGITUDE        564mr   104.17E(104.17)      68.167W(291.83)
 LATITUDE_T LATITUDE          168 r   25.833S              29.833N
 DEPTH_T   DEPTH (m)           51 i-  2.5                  5745
 TIME1     TIME                 2 r   21-JAN-2031 00:00    01-FEB-2031 00:00
 normal    E
 normal    F
yes? show grid den2
    GRID (G002)
 name       axis              # pts   start                end
 LONGITUDE_T LONGITUDE        564mr   104.17E(104.17)      68.167W(291.83)
 LATITUDE_T LATITUDE          168 r   25.833S              29.833N
 DEPTH_T   DEPTH (m)           51 i-  2.5                  5745
 TIME1     TIME                 2 r   21-JAN-2031 00:00    01-FEB-2031 00:00
 ABSTRACT  E              9999999 r   1                    9999999
 ABSTRACT  F              9999999 r   1                    9999999



[Thread Prev][Thread Next][Index]
Contact Us
Dept of Commerce / NOAA / OAR / PMEL / Ferret

Privacy Policy | Disclaimer | Accessibility Statement