[ncl-talk] low memory algorithm for sorting ? how large is INT_MAX ?

Gus Correa gus at ldeo.columbia.edu
Fri Oct 20 17:59:56 MDT 2017


On 10/20/2017 07:44 PM, Adam Herrington wrote:
> the length of the array is:
> 
> npts = 5109033600
> 
> Yes, the problem is the array is too big. I am fairly certain that the 
> problem is npts > INT_MAX, where INT_MAX appears to be some limiter on 
> array size used in many of the ncl functions (I get this error all the 
> time).
> 
> My goal is to compute a percentile. I was thinking that by generating 
> INT_MAX samples of the array, and putting those samples into an array of 
> length INT_MAX, I can sort the reduced array and find the percentiles of 
> the reduced array. However, I would like to know what the value of 
> INT_MAX is. Do you know how I can find that out ?
> 

Hi

In Linux (at least current 64-bit versions) INT_MAX is 2^31-1 = 
2147483647, the maximum signed integer representable with 32 bits.
That is smaller than your array size.




> Adam
> 
> On Fri, Oct 20, 2017 at 5:34 PM, Kevin Hallock <hallock at ucar.edu 
> <mailto:hallock at ucar.edu>> wrote:
> 
>     Hi Adam,
> 
>     Thanks for sharing the error and the code snippet.
> 
>     Based on the error message, it seems like there may be an issue with
>     the size of dtcond1d.
> 
>     Could you please add “print(npts)” before “ip
>     = dim_pqsort(dtcond1d,kflag)” and rerun the script? I’m curious what
>     NCL thinks the dimensionality of dtcond1d is.
> 
>     Thanks,
>     Kevin
> 
>>     On Oct 20, 2017, at 5:01 PM, Adam Herrington
>>     <adam.herrington at stonybrook.edu
>>     <mailto:adam.herrington at stonybrook.edu>> wrote:
>>
>>     the error message:
>>
>>     fatal:dim_pqsort: one or more input dimensions sizes are greater
>>     than INT_MAX
>>     ^Mfatal:["Execute.c":8640]:Execute: Error occurred at or near line
>>     294 in file omega3d_pdf_samples.ncl
>>
>>     A snippet of the code:
>>
>>          dtcond1d = ndtooned(DTCOND)
>>          delete(DTCOND)
>>          npts = dimsizes(dtcond1d)
>>          kflag=2
>>          ip = dim_pqsort(dtcond1d,kflag)
>>
>>          ;;95th
>>          tmp = npts*0.95
>>          iptf = tointeger(floor(tmp))
>>          dtlimhi(2) = dtcond1d(iptf)
>>
>>
>>
>>
>>     On Fri, Oct 20, 2017 at 4:17 PM, Kevin Hallock <hallock at ucar.edu
>>     <mailto:hallock at ucar.edu>> wrote:
>>
>>         Hi Adam,
>>
>>         Could you please copy and paste the full error message you’re
>>         seeing?
>>
>>         Also, would you mind sharing a copy of your script? It might
>>         help diagnose the issue.
>>
>>         Thanks,
>>         Kevin
>>
>>         > On Oct 20, 2017, at 3:49 PM, Adam Herrington
>>         <adam.herrington at stonybrook.edu
>>         <mailto:adam.herrington at stonybrook.edu>> wrote:
>>         >
>>         > I am trying to sort with the function 'dim_pqsort', but my
>>         array is too large. I get an error saying that 1 or more
>>         dimensions is larger than INT_MAX.
>>         >
>>         > If anyone has a solution to this problem, I'm all ears.
>>         >
>>         > My thinking is that I can create an array of sample indices
>>         through 'generate_sample_indices', and make the number of
>>         sample indices = INT_MAX. Does anyone know how large INT_MAX is ?
>>         >
>>         > Adam Herrington
>>         > _______________________________________________
>>         > ncl-talk mailing list
>>         > ncl-talk at ucar.edu <mailto:ncl-talk at ucar.edu>
>>         > List instructions, subscriber options, unsubscribe:
>>         > http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>         <http://mailman.ucar.edu/mailman/listinfo/ncl-talk>
>>
>>
> 
> 
> 
> 
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
> 



More information about the ncl-talk mailing list