Digging a bit deeper into a the g95 source to see exactly what goes on in at least 1 compiler... struct _bignum { int refs; struct bignum *next; int num_comps, max_comps; int sign, serial, typeless; int real_sign, real_exp; g95_ff *ff; comp *comps; } _bignum; typedef struct _bignum * bignum; . . . typedef struct g95_expr { expr_t type; int rank, serial; bignum *shape; <rest removed> . . . typedef struct { int rank; /* A rank of zero means that a variable is a scalar */ array_type type; struct g95_expr *lower[G95_MAX_DIMENSIONS], *upper [G95_MAX_DIMENSIONS]; } g95_array_spec; Which seems to indicate to me that the maximum array size is 2*maxint*ndims*(data type size) (backed up by looking at g95_array_spec_size in array.c) which would be 32GB for a 1D array of double precision numbers... but then, I see typedef struct g95_array_ref { ar_type type; int dimen; /* # of components in the reference */ struct g95_expr *start[G95_MAX_DIMENSIONS], *end[G95_MAX_DIMENSIONS], *stride[G95_MAX_DIMENSIONS]; enum { DIMEN_ELEMENT=1, DIMEN_RANGE, DIMEN_VECTOR, DIMEN_UNKNOWN } dimen_type[G95_MAX_DIMENSIONS]; g95_locus where[G95_MAX_DIMENSIONS]; /* All expressions can be NULL */ } g95_array_ref; which (looking through array.c) seems to indicate that the maximum array specification you can reference is 2*max_int*(data type size) (32GB)... Now, to test it on a few different compilers :) Here is my simple code... program test integer(8) :: i integer(4) :: j real(8), dimension(:), allocatable :: a i = huge(j) write(*,*) 'i= ', i allocate(a(i)) write(*,*) 'size a= ', size(a) deallocate(a) i = huge(j)*2_8 write(*,*) 'i= ', i allocate(a(i)) write(*,*) 'size a= ', size(a) deallocate(a) i = huge(j)*8_8 write(*,*) 'i= ', i allocate(a(i)) write(*,*) 'size a= ', size(a) deallocate(a) end program test Now, intel on Itanium: cognac:~/tmp > ifort ./test.f90 cognac:~/tmp > ./a.out i= 2147483647 size a= 2147483647 i= 4294967294 size a= -2 i= 17179869176 size a= -8 g95-ia64-32-linux on Itanium: cognac:~/tmp > g95 ./test.f90 cognac:~/tmp > ./a.out i= 2147483647 size a= 2147483647 i= 4294967294 size a= 0 i= 17179869176 size a= 0 g95-ia64-64-linux on Itanium: cognac:~/tmp > g95 ./test.f90 cognac:~/tmp > ./a.out i= 2147483647 size a= 2147483647 i= 4294967294 size a= 4294967294 i= 17179869176 size a= 17179869176 So, mixed results :) Surprisingly it looks like the intel compilers on Itanium have a 2gb limit? I wonder what Pathscale returns (nudge- nudge)? All these runs were done on an SGI Altix 3700Bx2 with 320GB of memory. Stu. > > I have no idea what Stuart was talking about. Unformatted disk files > yes, but not in-memory objects... > > -- greg -- Dr Stuart Midgley [log in to unmask]