Paul,
I also tried various block sizes in your program with unusual results. While 80mg blocks gives 2,768mb, the allocated memory reduces with bigger block sizes. (> 597mg) 600mg blocks gives only 2 blocks and fails at only 1,887mb while 1,000mg blocks gives up to 2,097mb 1,200mg and above gives nothing !!
Unfortunately, I'm from old Fortran and am not familiar with pointers !
All this with FTN95_NEW_MEMORY
! Last change: JDC 29 Sep 2008 9:00 am
! Program to test memory sizes
!
real*8, pointer :: gib(:)
!
integer*4 i, alstat, block_size
integer*4, parameter :: mega_byte = 1024*1024/8
integer*8, parameter :: eight = 8
integer*8 size, b8
!
write (*,*) 'megabyte ?'
read (*,*) i
block_size = i*mega_byte ! defines 1 blocks
!
! block_size = 80*mega_byte ! defines 33 blocks 2,768,240,640 2,852m fail
! block_size = 200*mega_byte ! defines 12 blocks 2,516,582,400 2,726m fail
! block_size = 300*mega_byte ! defines 7 blocks 2,202,009,600 2,516m fail
! block_size = 400*mega_byte ! defines 5 blocks 2,097,152,000 2,516m fail
! block_size = 500*mega_byte ! defines 4 blocks 2,097,152,000 2,621m fail
! block_size = 550*mega_byte ! defines 3 blocks 1,730,150,400 2,306m fail
! block_size = 597*mega_byte ! defines 3 blocks 1,877,999,616 2,503m fail
! block_size = 600*mega_byte ! defines 2 blocks 1,258,291,200 1,887m fail
! block_size = 800*mega_byte ! defines 2 blocks 1,677,721,600 2,516m fail
! block_size = 1000*mega_byte ! defines 2 blocks 2,097,152,000 3,115m fail
! block_size = 1100*mega_byte ! defines 1 blocks 1,153,433,600 2,306m fail
!
! block_size = 1200*mega_byte ! defines no blocks
b8 = block_size
size = 0
!
do i = 1,1000
allocate (gib(block_size),stat=alstat)
size = size + eight*b8
print*, i, size, alstat
if (alstat /= 0) exit
end do
end