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

Insufficient virtual memory

renald
Beginner
1,071 Views

I am developing a Fortran code on a computer with a Quad Core Intel Xeon E5345 and 16Gb of RAM.
The arrays are dynamically allocated. When I run the program for a total required memory allocation of about 3 Gb, I get the message : forttl: severe(41) : insuficcient virtual memory.
My Linux OS is Ubuntu 7.10 (64 bits)

I have looked at the available memory with the command : 'cat /proc/meminfo' and I get "MemTotal : 3368228 kB" although I do have 16 Gb (I have checked that I have 8x2Gb using the command : 'sudo dmidecode -t memory')

Does anybody know how to fix this ?

0 Kudos
4 Replies
Ron_Green
Moderator
1,071 Views
Did you install a 32bit OS instead of the 64bit OS?

uname -a

should tell you. You should see something like:

Linux spd20 2.4.21-37.EL #1 SMP Wed Sep 7 13:32:18 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux

Note the "x86_64", this is the clue that you have a 64bit OS. If you see "i386" then you have a 32bit OS loaded.

AND, once that is done, Make sure you use -mcmodel medium or -mcmodel large during compilation. Did you do that? The default is -mcmodel small which uses 32bit pointers for data.

ron
0 Kudos
renald
Beginner
1,071 Views
Thank you for your answer.
In fact I get 'i686' when I type 'uname -a'
and the command 'dmidecode -t system' gives 'Access Method : Memory Map Physical 32-bit address'
It seems that I have to install a 64bit version of Ubuntu.

After this, can I use the usual Intel Fortran Compiler that I used previously (ifort version 10.1) or is there a specific 64bit version ?



0 Kudos
Ron_Green
Moderator
1,071 Views
Well, I believe you have installed a 32bit OS. Here I have a Quad core Intel system, Ubuntu 7.04 Fiesty Fawn. Here is what I see:

# uname -a
Linux hostname 2.6.20-15-generic #2 SMP Sun Apr 15 06:17:24 UTC 2007 x86_64 GNU/Linux

I believe the "i686" is a signifier of a 32bit OS. Also, check out what I see for dmidecode:

dmidecode -t system | grep -i access
Access Method: General-purpose non-volatile data functions


Let me go check on a 32bit Linux OS and uname:
uname -a
Linux hostname 2.4.21-47.ELsmp #1 SMP Wed Jul 5 20:38:41 EDT 2006 i686 i686 i386 GNU/Linux

now this is a Redhat system, still the "i686" indicates 32bits, as does your 'Access Method'. So yes, time to load a new OS.

And yes, you are correct: there is a 32bit and 64bit compiler installed on a 64bit system. The 32bit compiler is in /opt/intel/fc/
The 64bit compiler in /opt/intel/fce/

To select the 64bit compiler:

source /opt/intel/fce//bin/ifortvars.sh

ron

0 Kudos
renald
Beginner
1,071 Views

Thanks a lot for your help.
0 Kudos
Reply