У меня есть серийный код Fortran, который отлично работает. Когда я компилирую тот же код с помощью ifort -parallel и запускаю его, он дает неправильные результаты и переполняется. Я ожидал, что с флагом «-parallel» компилятор Intel сможет выбирать циклы, безопасные для распараллеливания, и я должен получить те же результаты, что и для последовательного кода, чего не произошло. Еще более странное поведение заключается в том, что я закрыл все распараллеливание циклов do в моем коде с помощью! DEC $ NOPARALLEL, скомпилировал код с помощью ifort -parallel, чтобы убедиться, что ни один из циклов не был распараллелен, а затем запустился. Удивительно, но я получил такие же неправильные результаты и переполнение, хотя последнее действие должно быть в точности эквивалентно последовательному коду.
Есть ли кто-нибудь, кто может объяснить такое поведение, или это просто недостаток компилятора Intel.
Привет.