jstageが繋がらない2012年02月04日16時49分
TASYUの趣味で行っている電子工作や実験・プログラムの記録

電気技術とプログラムの世界

2010年11月21日

Windows2GBの壁

Fortranプログラムなどを組む中でWindowsで作業している場合

Variable XXX too large for NTCOFF. Bigger than 2GB. Use heap instead

静的配列をしようしていると2GBの壁にぶつかる。
これは64bitOSのWindowsにしても変わらず単一の配列が2GBを超える計算ができなくなる。
そこで64bitOSのWindowsを扱う場合にのみ使える方法だが、動的配列で定義をすることで8GBまでの単一配列が扱えるようになる。

具体的にはFortranの場合

dimention A(256)
などの配列を
real,allocatable,dimension(:) :: a
と動的配列で定義した後

allocate(a(256))
としてメモリを確保する。

二次元配列の場合は
real,allocatable,dimension(:,:) :: a
allocate(a(256,512))

こうゆうことを考えるとLinuxマシンの方がいいような気がしてくる。
そもそも64BitのWindowsを開発するときになぜ修正しなかったのだろう。せっかくの64bitが。。。

参考
PGI Workstation/Server for Windows(R) 製品情報
Memory Limits for Applications on Windows* - Intel® Software Network/
Forums - Intel® Software Network

ページのトップへ
tasyu.com  - ブログ  - 電気  - リンクについて
Copyright © TASYU All rights reserved.