Не-OpenMP код Fortran, скомпилированный с флагом OpenMP, ведет себя по-разному - PullRequest
0 голосов
/ 03 мая 2019

Код Fortran. Я работаю с компиляциями и запускается, как и ожидалось, в последовательном режиме, но не работает, как ожидалось, с добавленными в код директивами OpenMP (в основном, с распараллеливанием циклов). Чтобы отладить код, я решил удалить все директивы OpenMP, а затем заново ввести их один за другим, чтобы увидеть, в чем проблема. Однако, удалив весь код OpenMP из моих файлов на Fortran, компиляция с флагами -fopenmp или -qopenmp по-прежнему дает те же результаты, как если бы директивы OpenMP все еще были.

Я пытался удалить файлы .o и любые другие следы, оставленные скомпилированной программой, но это ничего не изменило. Я пробовал оба компилятора gfortran и ifort (работающие в Linux Ubuntu, а также MacOS X).

Я не уверен, что мне нужно показывать какой-либо код в этом случае, так как мой вопрос о том, что происходит с флагами -fopenmp или -qopenmp без каких-либо директив OpenMP в коде.

Я ожидаю, что код, не содержащий никаких директив OpenMP, но скомпилированный с флагами -fopenmp или -qopenmp, будет работать так, как если бы он не был скомпилирован с этими флагами, и дал бы те же результаты. Но это, очевидно, не правда. Каким может быть источник этого поведения?

Мне интересно, сталкивался ли кто-то еще с подобной проблемой и, возможно, нашел решение.

...