Код Fortran. Я работаю с компиляциями и запускается, как и ожидалось, в последовательном режиме, но не работает, как ожидалось, с добавленными в код директивами OpenMP (в основном, с распараллеливанием циклов). Чтобы отладить код, я решил удалить все директивы OpenMP, а затем заново ввести их один за другим, чтобы увидеть, в чем проблема. Однако, удалив весь код OpenMP из моих файлов на Fortran, компиляция с флагами -fopenmp
или -qopenmp
по-прежнему дает те же результаты, как если бы директивы OpenMP все еще были.
Я пытался удалить файлы .o
и любые другие следы, оставленные скомпилированной программой, но это ничего не изменило. Я пробовал оба компилятора gfortran
и ifort
(работающие в Linux Ubuntu, а также MacOS X).
Я не уверен, что мне нужно показывать какой-либо код в этом случае, так как мой вопрос о том, что происходит с флагами -fopenmp
или -qopenmp
без каких-либо директив OpenMP в коде.
Я ожидаю, что код, не содержащий никаких директив OpenMP, но скомпилированный с флагами -fopenmp
или -qopenmp
, будет работать так, как если бы он не был скомпилирован с этими флагами, и дал бы те же результаты. Но это, очевидно, не правда. Каким может быть источник этого поведения?
Мне интересно, сталкивался ли кто-то еще с подобной проблемой и, возможно, нашел решение.