Search code examples
arraysinputfortranallocation

Fortran "additional relocation overflows" error while reading huge input file


I have following input file

4400000
      1       4       4    7056    4203    7190    2856       0       0       0       0       0       0       0   0.942    0.93   0.944   0.925       0       0       0       0       0       0   3.846     0.0   1.627
      2       3       3    8553     481    7734       0       0       0       0       0       0       0       0    0.63   0.923   0.322       0       0       0       0       0       0       0    1.93     2.0  -0.792
      3       3       2    7007    3625       0       0       0       0       0       0       0       0       0   0.359    0.93       0       0       0       0       0       0       0       0   1.889     2.0  -0.728
      4       4       4    1611     854    7901    8306       0       0       0       0       0       0       0   0.923   0.944   0.936   0.915       0       0       0       0       0       0   3.867     0.0   1.488
      5       3       4    7657    1180    6659    4147       0       0       0       0       0       0       0   0.332    0.69   0.346   0.574       0       0       0       0       0       0   1.969     2.0  -0.634
      6       3       2    1978     523       0       0       0       0       0       0       0       0       0   0.931   0.917       0       0       0       0       0       0       0       0   1.849     2.0  -0.805
...

File has total 27 columns. I tried to read this file using

do l=1,num
 read (1,42) atindex(l),atype(l),nbonds(l),(conn(l,j),j=1,10),molnr(l),(bos(l,j),j=1,10),abo(l),nlp(l),charge(l)
enddo

(num = number of lines) and

42  format (i7,13i7,11f7.3,f7.1,f7.3)

I compiled this using intel compiler. However, this creates following "additional relocation overflows" error:

....
/opt/shared/intel/2018u4/compilers_and_libraries_2018.5.274/linux/compiler/lib/intel64_lin/libifcoremt.a(for_init.o): In function `for__signal_handler':
    for_init.c:(.text+0x906): additional relocation overflows omitted from the output

It looks like memory issue due to too much column. That error never happens when I read only upto integer column (column 14) with proper format. However, when I tried to read real numbers, then the error occur.

This is research server cluster, not my laptop or desktop so I wouldn't be possible to modify installed setting of intel compiler.

How can I escape from this issue?


Solution

  • From intel fortran forum I learned that this issue can be escaped by compiling in following way:

    ifort abc.f -mcmodel medium -o abc

    Also recommend to read regarding this issue:

    https://software.intel.com/en-us/articles/avoiding-relocation-errors-when-building-applications-with-large-global-or-static-data-on-intel64/