<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: +2 GB memory access in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754514#M10001</link>
    <description>From the page I cited above:&lt;BR /&gt;-------------------------&lt;BR /&gt;&amp;gt; we had problems with process dying right around 2.3GB (according &lt;BR /&gt;&amp;gt; to top). &lt;BR /&gt; &lt;BR /&gt;Out of 3 GB, you had 2.3 GB used and 0.7 GB of tiny chunks of &lt;BR /&gt;memory that were smaller than what you tried to allocate. &lt;BR /&gt;-------------------------&lt;BR /&gt;So it seems that the theoretical limit of 3GB can be very far from the actual limit. Tweaking the kernel is an option, but it's not an easy step.&lt;BR /&gt;We've got a 2GB RAM+8GB swap RedHat 8 box, but I don't think the IT staff would be happy if I run your test code on it. I'll try to ask and I'll post the results if I can.&lt;BR /&gt;&lt;BR /&gt;However, it's quite strange that these issues are very little documented on the net, since this limit is starting to cause many headaches in the field of scientific computing.&lt;BR /&gt;</description>
    <pubDate>Fri, 26 Sep 2003 15:41:26 GMT</pubDate>
    <dc:creator>arturodigioia</dc:creator>
    <dc:date>2003-09-26T15:41:26Z</dc:date>
    <item>
      <title>+2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754509#M9996</link>
      <description>I am developing an application that requires several large arrays. Each of the arrays is below the 2 GB limits, but the total memory needed for all the arrays are close to 3 GB. &lt;BR /&gt;&lt;BR /&gt;I am using a Pentium III dual processor workstation with 2 GB RAM and 2 GB of swap space (upgrading shortly to Xeron based workstation with 4 GB RAM)&lt;BR /&gt;&lt;BR /&gt;The current system is:&lt;BR /&gt;Os: Linix Redhat 7.1 (kernel 2.4.2-2smp)&lt;BR /&gt;Glibc: glibc-2.2.4-31&lt;BR /&gt;Ifc: Intel Fortran Compiler for 32-bit applications, Version 7.1   Build 20030521Z&lt;BR /&gt;	Ld: GNU ld version 2.10.91 (with BFD 2.10.91.0.2)&lt;BR /&gt;&lt;BR /&gt;The ulimit -a reports the following settings:&lt;BR /&gt;core file size (blocks)     1000000&lt;BR /&gt;data seg size (kbytes)      unlimited&lt;BR /&gt;file size (blocks)          unlimited&lt;BR /&gt;max locked memory (kbytes)  unlimited&lt;BR /&gt;max memory size (kbytes)    unlimited&lt;BR /&gt;open files                  1024&lt;BR /&gt;pipe size (512 bytes)       8&lt;BR /&gt;stack size (kbytes)         8192&lt;BR /&gt;cpu time (seconds)          unlimited&lt;BR /&gt;max user processes          65533&lt;BR /&gt;virtual memory (kbytes)     unlimited&lt;BR /&gt;&lt;BR /&gt;I have used the following program to test the amount of memory I can access:&lt;BR /&gt;&lt;BR /&gt;Program memtest&lt;BR /&gt;&lt;BR /&gt;       type array&lt;BR /&gt;         integer, pointer       :: elem(:)&lt;BR /&gt;       end type array&lt;BR /&gt;&lt;BR /&gt;       type(array), allocatable, dimension(:) :: a&lt;BR /&gt;       type(array), allocatable, dimension(:) :: b&lt;BR /&gt;       type(array), allocatable, dimension(:) :: c&lt;BR /&gt;&lt;BR /&gt;       integer n_elem,ierr&lt;BR /&gt;       real mem,block&lt;BR /&gt;&lt;BR /&gt;       mem=0.0&lt;BR /&gt;       n_elem=(2**26)&lt;BR /&gt;       block=n_elem*4.0/(1024**3)&lt;BR /&gt;&lt;BR /&gt;       allocate(a(10),b(10),c(10),stat=ierr)&lt;BR /&gt;       if (ierr /= 0) then&lt;BR /&gt;         print *,'Allocation of arrays failed with status=',ierr&lt;BR /&gt;         stop 16&lt;BR /&gt;       endif&lt;BR /&gt;&lt;BR /&gt;       do i=1,4&lt;BR /&gt;         allocate(a(i)%elem(n_elem),stat=ierr)&lt;BR /&gt;         if (ierr /= 0) then&lt;BR /&gt;           print *,'Allocation of A(',i,' ) failed with status=',ierr&lt;BR /&gt;           stop 16&lt;BR /&gt;         endif&lt;BR /&gt;         mem=mem+block&lt;BR /&gt;         print *,'A(',i,' ): ok - memory allocated (GB) = ',mem&lt;BR /&gt;         a(i)%elem=1&lt;BR /&gt;&lt;BR /&gt;         allocate(b(i)%elem(n_elem),stat=ierr)&lt;BR /&gt;         if (ierr /= 0) then&lt;BR /&gt;           print *,'Allocation of B(',i,' ) failed with status=',ierr&lt;BR /&gt;           stop 16&lt;BR /&gt;         endif&lt;BR /&gt;         mem=mem+block&lt;BR /&gt;         print *,'B(',i,' ): ok - memory allocated (GB) = ',mem&lt;BR /&gt;         b(i)%elem=1&lt;BR /&gt;&lt;BR /&gt;         allocate(c(i)%elem(n_elem),stat=ierr)&lt;BR /&gt;         if (ierr /= 0) then&lt;BR /&gt;           print *,'Allocation of C(',i,' ) failed with status=',ierr&lt;BR /&gt;           stop 16&lt;BR /&gt;         endif&lt;BR /&gt;         mem=mem+block&lt;BR /&gt;         print *,'C(',i,' ): ok - memory allocated (GB) = ',mem&lt;BR /&gt;         c(i)%elem=1&lt;BR /&gt;       enddo&lt;BR /&gt;&lt;BR /&gt;       print *,'EOJ'&lt;BR /&gt;       end&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I have tried both with and without the compiler options -stack_temps, but get always the same results:&lt;BR /&gt;&lt;BR /&gt;A(           1  ): ok - memory allocated (GB) =   0.2500000    &lt;BR /&gt;B(           1  ): ok - memory allocated (GB) =   0.5000000    &lt;BR /&gt;C(           1  ): ok - memory allocated (GB) =   0.7500000    &lt;BR /&gt;A(           2  ): ok - memory allocated (GB) =    1.000000    &lt;BR /&gt;B(           2  ): ok - memory allocated (GB) =    1.250000    &lt;BR /&gt;C(           2  ): ok - memory allocated (GB) =    1.500000    &lt;BR /&gt;A(           3  ): ok - memory allocated (GB) =    1.750000    &lt;BR /&gt;Allocation of B(           3  ) failed with status=         494&lt;BR /&gt;FORTRAN STOP 16&lt;BR /&gt;&lt;BR /&gt;It seems that I can not exceed 2 GB of 
memory.&lt;BR /&gt;&lt;BR /&gt;Is this a limit set by Linux or is it set by ifc?&lt;BR /&gt;&lt;BR /&gt;Per&lt;BR /&gt;</description>
      <pubDate>Wed, 24 Sep 2003 21:50:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754509#M9996</guid>
      <dc:creator>snfper19</dc:creator>
      <dc:date>2003-09-24T21:50:12Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754510#M9997</link>
      <description>I am not as familiar with Linux as Windows, but it was my understanding that, as in Windows, the default process address space was 2GB.  I don't know if there's a way to change that in Linux - others might.&lt;BR /&gt;&lt;BR /&gt;Steve</description>
      <pubDate>Wed, 24 Sep 2003 22:49:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754510#M9997</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2003-09-24T22:49:33Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754511#M9998</link>
      <description>You might find this link useful. It's a summary of all the informastions a user with the same problem obtained from the lkml. &lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://www.spack.org/index.cgi/LinuxRamLimits" target="_blank"&gt;http://www.spack.org/index.cgi/LinuxRamLimits&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;I don't think upgrading to a Xeon workstation will solve the problem, no matter of the amount of RAM installed. It's a limit of 32bit processors and Linux kernel.&lt;BR /&gt;32 bit -&amp;gt; Max 4GB&lt;BR /&gt;Linux kernel -&amp;gt; Reserves 1GB&lt;BR /&gt;(Theoretical) max per process -&amp;gt; 3GB (the real limit depends upon many factors)&lt;BR /&gt;&lt;BR /&gt;Apparently on Windows the limit is 2GB per process, as Steve said.&lt;BR /&gt;&lt;BR /&gt;I would think twice before buying a shared memory SMP 32bit workstation for memory intensive scientific computing, at this moment. We've reached the limits of this architecture.&lt;BR /&gt;I would think about Itanium or the other chip which I don't name on an Intel forum ;-) .</description>
      <pubDate>Thu, 25 Sep 2003 14:51:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754511#M9998</guid>
      <dc:creator>arturodigioia</dc:creator>
      <dc:date>2003-09-25T14:51:10Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754512#M9999</link>
      <description>&lt;I&gt;I would think about Itanium or the other chip which I don't name on an Intel forum ;-)&lt;/I&gt;&lt;BR /&gt;&lt;BR /&gt;Alpha? :-)&lt;BR /&gt;&lt;BR /&gt;Steve</description>
      <pubDate>Thu, 25 Sep 2003 22:48:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754512#M9999</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2003-09-25T22:48:28Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754513#M10000</link>
      <description>The information?s on: &lt;A href="http://www.spack.org/index.cgi/LinuxRamLimits" target="_blank"&gt;http://www.spack.org/index.cgi/LinuxRamLimits&lt;/A&gt; and on similar pages shows that it should be possible to access up to 64 GB of RAM on an IA-32 running Linux 2.4.x by supporting Intel's PAE (Physical Address Extension) features which are in all Pentium Pro and newer CPU's. Without PAE compiled into the kernel the OS can address a maximum of 4GB of RAM. With 2.4 kernels (with a large memory configuration) a single process can address up to the total amount of RAM in the machine minus 1GB (reserved for the kernel), to a maximum 3GB. &lt;BR /&gt;&lt;BR /&gt;My kernel is configured for large memory support (CONFIG_HIGHMEM4G=y and CONFIG_HIGHMEM=y). Therefor, I expect that it should be possible to allocate close to 3 GB of memory. But my test Fortran program can only allocate ~2 GB. &lt;BR /&gt;&lt;BR /&gt;Too me, this indicates that the limit is in the ifc compiler and not related to Linux nor to the IA-32 architecture. If this the right conclusion right?   &lt;BR /&gt;    &lt;BR /&gt;Per&lt;BR /&gt;</description>
      <pubDate>Fri, 26 Sep 2003 14:14:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754513#M10000</guid>
      <dc:creator>snfper19</dc:creator>
      <dc:date>2003-09-26T14:14:32Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754514#M10001</link>
      <description>From the page I cited above:&lt;BR /&gt;-------------------------&lt;BR /&gt;&amp;gt; we had problems with process dying right around 2.3GB (according &lt;BR /&gt;&amp;gt; to top). &lt;BR /&gt; &lt;BR /&gt;Out of 3 GB, you had 2.3 GB used and 0.7 GB of tiny chunks of &lt;BR /&gt;memory that were smaller than what you tried to allocate. &lt;BR /&gt;-------------------------&lt;BR /&gt;So it seems that the theoretical limit of 3GB can be very far from the actual limit. Tweaking the kernel is an option, but it's not an easy step.&lt;BR /&gt;We've got a 2GB RAM+8GB swap RedHat 8 box, but I don't think the IT staff would be happy if I run your test code on it. I'll try to ask and I'll post the results if I can.&lt;BR /&gt;&lt;BR /&gt;However, it's quite strange that these issues are very little documented on the net, since this limit is starting to cause many headaches in the field of scientific computing.&lt;BR /&gt;</description>
      <pubDate>Fri, 26 Sep 2003 15:41:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754514#M10001</guid>
      <dc:creator>arturodigioia</dc:creator>
      <dc:date>2003-09-26T15:41:26Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754515#M10002</link>
      <description>You're confusing virtual memory with physical memory.&lt;BR /&gt;&lt;BR /&gt;PAE is a method, using specific OS calls, to map regions of extended physical memory.  It does not allow the virtual address space to be extended and normal virtual memory calls cannot use PAE.&lt;BR /&gt;&lt;BR /&gt;It is not a restriction of the compiler.  The compiler will allocate whatever the OS tells it is allowed.&lt;BR /&gt;&lt;BR /&gt;Steve</description>
      <pubDate>Fri, 26 Sep 2003 21:35:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754515#M10002</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2003-09-26T21:35:25Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754516#M10003</link>
      <description>It seems to be ifc that sets the limit of 2 GB.&lt;BR /&gt;&lt;BR /&gt;I have been running my test program compiled with the Portland Group pgf90 compiler. With this compiler I can allocate and access at least 2.5 GB of memory. &lt;BR /&gt;&lt;BR /&gt;Here is the output from the program compiled with ifc:&lt;BR /&gt;&lt;BR /&gt;A(           1  ): ok - memory allocated (GB) =   0.2500000    &lt;BR /&gt; B(           1  ): ok - memory allocated (GB) =   0.5000000    &lt;BR /&gt; C(           1  ): ok - memory allocated (GB) =   0.7500000    &lt;BR /&gt; A(           2  ): ok - memory allocated (GB) =    1.000000    &lt;BR /&gt; B(           2  ): ok - memory allocated (GB) =    1.250000    &lt;BR /&gt; C(           2  ): ok - memory allocated (GB) =    1.500000    &lt;BR /&gt; A(           3  ): ok - memory allocated (GB) =    1.750000    &lt;BR /&gt; Allocation of B(           3  ) failed with status=         494&lt;BR /&gt;&lt;BR /&gt;And here, when compiled with pgf90:&lt;BR /&gt;&lt;BR /&gt;A(            1  ): ok - memory allocated (GB) =    0.2500000    &lt;BR /&gt; B(            1  ): ok - memory allocated (GB) =    0.5000000    &lt;BR /&gt; C(            1  ): ok - memory allocated (GB) =    0.7500000    &lt;BR /&gt; A(            2  ): ok - memory allocated (GB) =     1.000000    &lt;BR /&gt; B(            2  ): ok - memory allocated (GB) =     1.250000    &lt;BR /&gt; C(            2  ): ok - memory allocated (GB) =     1.500000    &lt;BR /&gt; A(            3  ): ok - memory allocated (GB) =     1.750000    &lt;BR /&gt; B(            3  ): ok - memory allocated (GB) =     2.000000    &lt;BR /&gt; C(            3  ): ok - memory allocated (GB) =     2.250000    &lt;BR /&gt; A(            4  ): ok - memory allocated (GB) =     2.500000    &lt;BR /&gt; Allocation of B(            4  ) failed with status=            1&lt;BR /&gt;</description>
      <pubDate>Fri, 26 Sep 2003 21:36:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754516#M10003</guid>
      <dc:creator>snfper19</dc:creator>
      <dc:date>2003-09-26T21:36:22Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754517#M10004</link>
      <description>I did a search of our support database, and it appears that indeed it is ifc that is limiting to 2GB.  This is fixed in the next release, due out at the end of the year.&lt;BR /&gt;&lt;BR /&gt;Steve</description>
      <pubDate>Sat, 27 Sep 2003 03:41:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754517#M10004</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2003-09-27T03:41:23Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754518#M10005</link>
      <description>Steve,&lt;BR /&gt;&lt;BR /&gt;Does the icc compiler under linux have the same 2GB limit?...our code runs out of memory at around 2.4GB although we have 4GB physical on a Xeon system.&lt;BR /&gt;&lt;BR /&gt;John D'Angelo&lt;BR /&gt;dangelo@ieee.org</description>
      <pubDate>Tue, 04 Nov 2003 06:27:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754518#M10005</guid>
      <dc:creator>fudd_elmer</dc:creator>
      <dc:date>2003-11-04T06:27:38Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754519#M10006</link>
      <description>It looks as if I missed something when writing my earlier response.  The compiler issue that was resolved was for Itanium systems only. My apologies for the confusion.&lt;BR /&gt;&lt;BR /&gt;As I understand it, Linux on IA-32 allows at most 3GB for the process address space, but by default it reserves 1GB of that space for shared libraries, making the effective limit 2GB.&lt;BR /&gt;&lt;BR /&gt;I don't think this is a compiler issue, but I don't pretend to be as familiar with the Linux side of the world.&lt;BR /&gt;&lt;BR /&gt;Steve</description>
      <pubDate>Tue, 04 Nov 2003 23:05:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754519#M10006</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2003-11-04T23:05:15Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754520#M10007</link>
      <description>I'd like to report that the test program posted on this forum completes SUCCESSFULLY, with no static linkage or anything, on a Fedora Core 2 system.  FC2 uses 2.6 kernels, and without looking I'm pretty sure PAE.  The same program bombs out at 2GB on an FC1 system.&lt;BR /&gt;&lt;BR /&gt;-Luke</description>
      <pubDate>Tue, 27 Jul 2004 04:23:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754520#M10007</guid>
      <dc:creator>lop</dc:creator>
      <dc:date>2004-07-27T04:23:35Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754521#M10008</link>
      <description>Ok, I've got more details.&lt;BR /&gt;&lt;BR /&gt;On FC2, I am not successful with a kernel.org kernel, but I am with a stock Fedora kernel.  Therefore, one of the mods redhat likes to stick in there must be helping.&lt;BR /&gt;&lt;BR /&gt;I tracked down the exact one.  I haven't had much luck getting this patch to apply cleanly to a kernel.org kernel, but enabling/disabling this option in the fedora kernel source (from rpm) directly affects how much memory I can allocate.&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://lwn.net/Articles/39283/" target="_blank"&gt;http://lwn.net/Articles/39283/&lt;/A&gt;</description>
      <pubDate>Wed, 28 Jul 2004 04:37:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754521#M10008</guid>
      <dc:creator>lop</dc:creator>
      <dc:date>2004-07-28T04:37:48Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754522#M10009</link>
      <description>Thanks for the information.</description>
      <pubDate>Wed, 28 Jul 2004 07:38:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754522#M10009</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2004-07-28T07:38:18Z</dc:date>
    </item>
    <item>
      <title>Re: +2 GB memory access</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754523#M10010</link>
      <description>Hi!&lt;BR /&gt; Can you please tell me the link where I can get that patch that would fix the problems with generating/accesing files larger than 2 Gb?&lt;BR /&gt;&lt;BR /&gt;Thanks,&lt;BR /&gt; Florin M.</description>
      <pubDate>Sun, 08 Aug 2004 09:33:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/2-GB-memory-access/m-p/754523#M10010</guid>
      <dc:creator>florinm1982</dc:creator>
      <dc:date>2004-08-08T09:33:34Z</dc:date>
    </item>
  </channel>
</rss>

