nano_exit

量子力学、固体物理、fortran、python、etc

2GBの壁

*.f90に対して、64bit対応でcompileする分には問題無いが、それを32bitでcompileしたり、*.fの場合には静的メモリに2GBの制限が付くらしい。

relocation truncated to fit: R_X86_64_32S against *...
additional relocation overflows omitted from the output.

的なerrorが出る。
これを回避するには、compile optionに

-mcmodel=large

を付けると良いらしい。ちなみに-mcmodel=mediumにすると、データへの制限は無くなるが、実行ファイルへの2GBの制限は残るそうな。
しかし、これを付けたところで、大元のgfortranなりifortなりなんなりのライブラリーがこれらによってcompileされてなければそこで詰まる。
最近は数十GB超えのPC(workstation)はほぼ当たり前だし、数値計算用に購入したworkstation or serverなんかは100GBのメモリを超えてることはザラだろうから、この辺融通が効くといいなぁと思う次第である。