- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve,
Thanks for your response. Is the 2GB limit for the combinedstatic + allocatable data? If not, what is the limit on allocatable data?
I am getting a little more space by making some arrays allocatable, butafter increasing sizes a bit moreI get runtime errors 41 or 179.
BTW: I amusing XP Pro and others may use the program in Win2000.
Gabriel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve,
Does ifort support /3gb option ?
This could provide up to an extra 1gb of allocatable memory on XP and Win2000 OS, before requiring a x64 upgrade.
John
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
At best, the /3GB switch could make some non-contiguous space available for allocatable. It's difficult to support Windows 2000; years ago Intel instituted a policy of disconnecting any machine detected running it.
Perhaps you neglected to notice this thread has been inactive for many years and may expose a problem with the web site.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I didn't notice that all the posts listed on Monday were a blast from the past. A new feature of this IDE !
One advantage of support for /3gb during the linking stage is that in Windows 7_64, 32-bit applications get access to about 3.8gb of addressable memory. This can be a significant advance for a 32-bit program, without the need to convert to 64-bit. This allows for the continued use of 32-bit libraries where a 64-bit library might not be available.
Both 32-bit (using /3gb) and 64-bit programs require the use of ALLOCATE to access arrays above 2gb, so there is a similar development requirement to adapt from static to allocatable arrays. By replacing COMMON with a module and declaring arrays ALLOCATABLE can be a relatively easy approach that provides for transfer to 64-bit when the 64-bit library becomes available.
John
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sergey,
I am using Windows 7 Enterprise 64 bit OS and Salford 32-bit compiler and getting 3.8gb of addressable memory, so I am not sure what you are referring to. I was also able to access using XP_64 bit OS. I am finding that the 64-bit OS I have used default to a /3gb mode for 32-bit applications, as most of the OS is moved out of the 0-4gb address space.
The other issue in your testing is if the linker is providing access to above 2gb address by making executables "Large address aware".
I can not be certain of the ALLOCATE memory interface being used, but I thought it was based on MALLOC. It might be another
This is a good option where old 32-bit libraries are difficult to access for 64-bit, as old suppliers disappear.
John
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sergey,
I have successfully run programs where I have allocated 3.7 gb on a 64-bit OS using a 32-bit compiler and produced a 32-bit application.
I again wrote a simple test program yesterday and tested it. This one allocates a 1.8gb array and a 1.0gb array. The challenge is getting sufficiently large contiguous memory for the arrays to be allocated. I probably could have allocated 1.9 and 1.2 gb arrays, although the linker can sometimes mess up free memory between addresses 200mb and 1800mb, putting a few scraps there. Anyway it works and I am attaching the program and a log file. To achieve 3.7gb, you need to allocate 3 or 4 arrays. Using a combination of large common below 2gb and allocate above 2gb can give a more controlled result.
(You will note it uses a non-standard function core4 and dcore8, which writes the memory at that address as a I*4 or R*8. You could use TRANSFER, although I don't know how to do a direct memory address. There was a recent post doing this.)
The big advantage of this is you can still use the 32-bit libraries and access up to 3.8gb, although you need to be smart with the order of memory allocation. I have found that 64-bit OS ( both XP_64 and Win 7) defaults to the /3gb switch on, while with 32-bit OS (I tested XP), it can be a hastle to get both the startup and linker enabled for /3gb.
John
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page