Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

allocation of large array

Braun__Jay
Beginner
449 Views

I am allocating a 4-dimensional array, and getting an application-generated error saying "FATAL: Unable to allocate array. Program ends"  (that's not an Intel Fortran message).

I re-compiled with -debug and no optimization (thanks for comments on my recent post regarding that issue) and was able to get the following information:

(istatus=41, message=<error reading variable: value requires 58671248 bytes, which is more than max-value-size>, .tmp.MESSAGE.len_V$a6e=6) at alloclib.f90:761

The requested memory is less than 60 MB.  Is there anything I can set, e.g., through a compilation option, to maintain the currently desired resolution?

Thanks,

Jay

0 Kudos
3 Replies
Steve_Lionel
Honored Contributor III
449 Views

Error 41 is "insufficient virtual memory". I'm guessing that, due to the (unspecified) type of read and/or buffering, the I/O library needed to allocate more memory and couldn't. This is not something you can change with a compiler option, though if buffering is the issue you may be able to play with BLOCKSIZE and BUFFERCOUNT in an OPEN.

Please tell us more about the READ in question - show the statement, the FORMAT if any, and what the data looks like.

0 Kudos
Braun__Jay
Beginner
449 Views

I think this is due to a data error.

The status is being returned by an ALLOCATE statement for a REAL, ALLOCATABLE array (no KIND or other additional specification) whose dimensions are (from a data file) 20000 by 30000 by 15000 by 3.  That would be on the order of 100 TB !

I think this was a false alarm.  Thanks, Steve.

j

0 Kudos
Steve_Lionel
Honored Contributor III
449 Views

Good to hear. Not sure what made me think it was an I/O thing. Need more coffee.

0 Kudos
Reply