Как уже говорилось, возможно, что конечный результат является численно чувствительным, и оптимизация, которая ослабляет арифметические правила, приводит к числовой нестабильности. Или оптимизация может выявить ошибку в программе. Если код выполняет свое собственное управление памятью (больше не нужно с Fortran 90/95/2003) с внутренним массивом целых, что-то может пойти не так в разных ОС. Я бы расследовал дальше ...
Я предлагаю включить все параметры предупреждения и проверки. Если есть ошибка, и вам повезло, они могут раскрыть ее или дать подсказку. По крайней мере, это легко попробовать. Попробуйте эти варианты:
-проверить все -traceback -warn all -fstack-protector
Вы также можете попробовать "-assume protect_parens", который сделает ifort совместимым со стандартом Fortran, и посмотреть, устранит ли это проблему.
Или, возможно, программа предполагает, что память предварительно выделена для некоторого значения. Это отличие от Linux и Mac ?? Я думаю, что у ifort есть возможности контролировать это. Если это старый код Fortran 77, он может предполагать, что локальные переменные сохраняются при вызове процедур, даже без использования «save» в объявлениях. Существует опция компилятора, заставляющая все локальные переменные действовать так, как если бы использовалось «save» - посмотрите, имеет ли это значение.