[Info-vax] problems allocating "large" arrays in OpenVMS-Fortran

Joukj joukj at hrem.nano.tudelft.nl
Mon Oct 28 07:39:26 EDT 2013


VAXman- @SendSpamHere.ORG wrote:
> In article <l4lenl$lh1$1 at speranza.aioe.org>, Joukj <joukj at hrem.nano.tudelft.nl> writes:
> 
> 1*1000*1000*1000 => 1000000000 or %x3B9ACA00
> 2*1000*1000*1000 => 2000000000 or %x77359400
> 
> I'm pretty sure that your Fortran is carving the array space out of the
> process's P0 space.  That's %x00000000 to %x3FFFFFFF.  With GB=2, you've
> exceeded this.
> 
> You need to use ADDRESS64 which will use P2 space for the allocation.
> 
Tried to force the ADDRESS64 attribute on the array:

program test
!
   integer ( kind = 1 ) , allocatable :: size_array( : , : , : )
   integer ( kind = 4 ) , parameter :: dimens = 1000
   real ( kind = 4 ) :: gbs
!
!DEC$ATTRIBUTES ADDRESS64 :: size_array
!
   write( * , * ) 'number of GB :'
   read ( * , * ) gbs
   allocate( size_array( nint( gbs * dimens ) , dimens , dimens ) )
   size_array=4
   read( *, *)
!
end

However now I get :

valeta-jj) run test
number of GB :
2
%FOR-F-INVREALLOC, allocatable array is already allocated
%TRACE-F-TRACEBACK, symbolic stack dump follows
image     module    routine               line      rel PC           abs PC
DEC$FORRTL                                   0 00000000000CFB30 
FFFFFFFF82DDFB30
test  TEST  TEST                            11 0000000000000352 
0000000000010352
                                              0 FFFFFFFF80A190D2 
FFFFFFFF80A190D2
DCL                                          0 000000000007D072 
000000007AE45072
%TRACE-I-END, end of TRACE stack dump


?? the manual says that ADDRESS64 is compatible with allocatable.

               Jouk



More information about the Info-vax mailing list