Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Array size limits

mushroom89_
Beginner
436 Views
I just installed another Gb of RAM, use the /3GB boot option for XP, and even used /LARGEADDRESSAWARE and my array size limits haven't increased. For example, the COMMON/static array size is still 225E06 for real*8 arrays. Then when I use the dynamically allocated arrays, the size there is the same too, but only 190E06 for real*8. In system tools I have 3Gb of virtual memory available, and using Windows Task Manager I have 1 Gb more memory than before. The errors are slightly different. If I increase COMMON I get a compile error "variable may not exceed 2.147Gb". If I use dynamic allocation, I get a "severe(41) insufficient virtual memory". So unless you advise otherwise, it looks like the second Gb of RAM was wasted.
0 Kudos
3 Replies
TimP
Honored Contributor III
436 Views
We just had a fairly long discussion here on this subject. I hope I can summarize without doing damage:
With /3GB and /largeaddressaware, you gain a non-contiguous address space which may be used for new ALLOCATABLE arrays. As you found out, it does not allow for a larger individual array.
The availability of ALLOCATABLE arrays of more than 2GB applies only to the 64-bit Windows.
0 Kudos
mushroom89_
Beginner
436 Views
Now we know what the IA-32 platform can do, and when we need a 64-bit system. For my finite element analyses I need one large array for an in-core solver, or I can use a wavefront solver. The in-core solver takes seconds, the wavefront solver a few minutes. I'm very content with the array capacity of IFC. I just wanted to be surewhat the "official" array sizelimits are in order to understanddifferences between IA-32 & 64-bit platforms. Thanks for confirming.
0 Kudos
jim_dempsey
Beginner
436 Views

Do you have the source code to your in core solver? If so then, if you are lucky, it may be a trivial task to break up the one large array into components.

For example, your current one large array may contain position vectors, velocity vectors, acceleration vectors, etc...

If so, then it may be a trivial task to separate these vector arrays into seperate allocatable arrays. And then in which case your application might grow from ~2GB to ~3GB.

Jim Dempsey

0 Kudos
Reply