[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