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

much less than 2G memory is used, but still occur the Fatal error LNK1248: image size exceeds...

tang__jun
Beginner
572 Views

Hello,

I use Intel Visual Fortran 2011 with VS 2010, in a 32 bit system. The memory is 4G, of which 3.4G is available.

I've learnt from the folloing topic that  Windows limits static code and data to 2GB.

https://software.intel.com/en-us/forums/topic/280002

I used several large 3-D arrays by declaring them with fixed bounds in a module. But all these 3-D arrays occupies only  about 1 G. Ohther  variables, no matter declared in the module or as local varibles, are small when compared with the arrays above. Unfortunately, there still occurs the Fatal error LNK1248: image size () exceeds maximum allowable size (80000000).

I cann't understand this. Could you please help me out?

Thank you big time in advance.

Following is a part of the module and the error:

module Information
integer,parameter :: mr=20,mz=1000,mp=6,my=10000
complex  u(mz*2,my),&
          zr1(mz*2,my,mp),zr2(mz*2,my,mp),zr3(mz*2,my,mp),zr4(mz*2,my,mp),zr5(mz*2,my,mp),zr6(mz*2,my,mp),zr7(mz*2,my,mp),&
          zs1(mz*2,my,mp),zs2(mz*2,my,mp),zs3(mz*2,my,mp),zs4(mz*2,my,mp),zs5(mz*2,my,mp),zs6(mz*2,my,mp),zs7(mz*2,my,mp),&
          yr1(mz,my*2,mp),yr2(mz,my*2,mp),yr3(mz,my*2,mp),yr4(mz,my*2,mp),yr5(mz,my*2,mp),yr6(mz,my*2,mp),yr7(mz,my*2,mp),&
          ys1(mz,my*2,mp),ys2(mz,my*2,mp),ys3(mz,my*2,mp),ys4(mz,my*2,mp),ys5(mz,my*2,mp),ys6(mz,my*2,mp),ys7(mz,my*2,mp),&
         ...

end module

 

1  fatal error LNK1248: 映像大小(11E3841C0)超过允许的最大大小(80000000) LINK

 

0 Kudos
1 Solution
andrew_4619
Honored Contributor II
572 Views

there are 7 zr arrays with = 1000 x 2 *6 *10000 element of 8 bytes which is  6,720,000,000  bytes hence the error.

View solution in original post

0 Kudos
4 Replies
andrew_4619
Honored Contributor II
573 Views

there are 7 zr arrays with = 1000 x 2 *6 *10000 element of 8 bytes which is  6,720,000,000  bytes hence the error.

0 Kudos
tang__jun
Beginner
572 Views

Thank you app4619. What a boring mistake I've made.

Could I ask you one more question? Can I make use of more than 2G memory by using  ALLOCATE?  If so,I will not have to change my system because I have memory of 3.4G.

0 Kudos
Steven_L_Intel1
Employee
572 Views

Not with a 32-bit application. The amount of physical memory you have is not directly relevant. If you have a 64-bit system and build a 64-bit application, then ALLOCATE will let you exceed 2GB.

0 Kudos
tang__jun
Beginner
572 Views

Thank you for your detailed explaination Steve.

0 Kudos
Reply