Максимальный возврат Ифорта 18 против Ифорта 19 - PullRequest
0 голосов
/ 13 декабря 2018

Запуск этой маленькой программы

program main
  implicit none

  integer(8) :: irecl
  irecl= 4147483646_8
  open(3,file='STORE.data',form='unformatted',access='direct',recl=irecl)
end

, скомпилированной с ifort 19.0.0.117, не доставляет мне проблем, но с ifort 18.0.1 дает forrtl: severe (118).Я знаю, что это потому, что ifort имеет максимальную длину записи (по крайней мере, 18 версия).Я не могу найти ничего о максимальной длине записи для ifort 19. Это прошло?Или как высоко это?Кажется, он ниже диапазона int * 8 (9223372036854775807).

1 Ответ

0 голосов
/ 14 декабря 2018

Сравнивая документацию Intel между версиями 18 и 19, я вижу, что ограничение на значение для длины записи было снято.(Документация не совсем ясна по этому вопросу, поскольку она относится к отформатированным записям, но я думаю, что это также применимо и здесь.) Практически, вы будете ограничены для прямого доступа к байтовому смещению, которое подходит для 64-битной подписицелое число.Обратите внимание, что по умолчанию RECL = единицы в OPEN, которые вы показываете, - это 4-байтовые единицы (если вы не включили опцию «предположить, что byterecl» (также подразумевается standard_semantics).

Я помню из моего времени вIntel, что была ошибка, из-за которой компилятор и библиотека времени выполнения не согласились с тем, что они поддерживают значения RECL больше 2 ** 32. Это было исправлено, возможно, в версии 19.

Я согласен сВладимир Ф. Если бы вы спросили Intel напрямую, вы можете спросить об этом на форуме Intel, и, вероятно, получите квалифицированный ответ, хотя это может занять некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...