У меня есть следующий входной файл
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
...
В файле всего 27 столбцов. Я попытался прочитать этот файл, используя
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 = количество строк) и
42 format (i7,13i7,11f7.3,f7.1,f7.3)
Я скомпилировал это с помощью компилятора intel. Однако это приводит к следующей ошибке «дополнительные переполнения при перемещении»:
....
/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
Это похоже на проблему с памятью из-за слишком большого количества столбцов. Эта ошибка никогда не происходит, когда я читаю только в целочисленный столбец (столбец 14) в правильном формате. Однако, когда я пытался прочитать реальные цифры, то произошла ошибка.
Это кластер исследовательских серверов, а не мой ноутбук или настольный компьютер, поэтому я не смог бы изменить установленные настройки компилятора Intel.
Как мне избежать этой проблемы?