[Pw_forum] Error encountered while attempting to allocate a d ata object.
Serguei Patchkovskii
ps at ned.sims.nrc.ca
Thu Jan 29 03:37:24 CET 2004
On Wed, 28 Jan 2004, Konstantin Kudin wrote:
> Regarding Intel compiler, what is the default size of
> the memory (i.e. without extra flags) there? Is it up
> to 1Gb, or something smaller?
That depends on the compiler options, kernel, the C library, and
any other libraries linked in. At least some 2.4-series kernels
also contain a bug in memory management routines, which may make
the maximum memory size decrease with time.
I usually end up running a little test program (attached) every
time I am not entirely sure. E.g.:
Linux 2.4.10 (1GB); glibc 2.2.4; ifc -FR :
BSS is around 807DDF8 ( 128.492 Mb)
stack is around BFFFF620 ( -1024.002 Mb)
Max array size = 2036.000 mbyte
Last array was at 409A2040 ( 1033.633 Mb)
Max second array size = 0.000 mbyte
Last second array was at 409A2040 ( 1033.633 Mb)
Linux 2.4.18 (0.5GB); glibc 2.2.5; ifc -FR :
BSS is around 807DD9C ( 128.492 Mb)
stack is around DFFFF410 ( -512.003 Mb)
Max array size = 2044.000 mbyte
Last array was at EAA8040 ( 234.656 Mb)
Max second array size = 1304.000 mbyte
Last second array was at ********** ( -1817.340 Mb)
Linux(x86_64) 2.4.19; glibc 2.3.2; ifc -FR:
BSS is around 807DDBC ( 128.492 Mb)
stack is around FFFFD280 ( -0.011 Mb)
Max array size = 2044.000 mbyte
Last array was at 40AC7040 ( 1034.777 Mb)
Max second array size = 1016.000 mbyte
Last second array was at ********** ( -1017.219 Mb)
Linux(x86_64) 2.4.19; glibc 2.3.2; pfg90 -Mfree (32-bit) :
BSS is around 8067188 ( 0.000 Mb)
stack is around 806EFC8 ( 0.000 Mb)
Max array size = 3068.000 mbyte
Last array was at 401A1010 ( 1025.629 Mb)
Max second array size = 892.000 mbyte
Last second array was at 8073950 ( 128.451 Mb)
As you can see, the results can be quite variable :-0)
Cheers,
Serguei
---
Dr. Serguei Patchkovskii
Tel: +1-(613)-990-0945
Fax: +1-(613)-947-2838
E-mail: Serguei.Patchkovskii at nrc.ca
Coordinator of Modelling Software
Theory and Computation Group
Steacie Institute for Molecular Sciences
National Research Council Canada
Room 2011, 100 Sussex Drive
Ottawa, Ontario
K1A 0R6 Canada
-------------- next part --------------
program mem
implicit none
integer, parameter :: inc = 1024*1024
integer, allocatable :: ary(:), ary1(:), ary2(:)
integer :: size, status
integer*8 :: addr
logical :: failed
integer, save :: static = 1
write (6,"(' BSS is around ',z10,' (',f10.3,' Mb)')") &
loc(static), loc(static)/(1024d0**2)
write (6,"(' stack is around ',z10,' (',f10.3,' Mb)')") &
loc(failed), loc(failed)/(1024d0**2)
failed = .false.
size = 0
do while (.not.failed)
size = size + inc
status = 0
allocate (ary(size),stat=status)
if (status/=0) then
failed = .true.
else
addr = loc(ary)
deallocate (ary)
end if
end do
write (6,"(' Max array size = ',f10.3,' mbyte')") &
((0d0+size-inc)*bit_size(ary))/8d0/(1024d0**2)
write (6,"(' Last array was at ',z10,' (',f10.3,' Mb)')") &
addr, addr/(1024d0**2)
allocate (ary1(size-inc))
failed = .false.
size = 0
do while (.not.failed)
size = size + inc
status = 0
allocate (ary(size),stat=status)
if (status/=0) then
failed = .true.
else
addr = loc(ary)
deallocate (ary)
end if
end do
write (6,"(' Max second array size = ',f10.3,' mbyte')") &
((0d0+size-inc)*bit_size(ary))/8d0/(1024d0**2)
write (6,"(' Last second array was at ',z10,' (',f10.3,' Mb)')") &
addr, addr/(1024d0**2)
allocate (ary2(size-inc))
pause
end program mem
More information about the Pw_forum
mailing list