Очень медленный код Fortran с mingw gcc 4.7.0 (по сравнению с 4.4.0)

У меня есть библиотека, написанная на Fortran 90, и несколько приложений на C и C ++, которые ее используют. Раньше я использовал MinGW GCC 4.4.0 (который был составлен мной из нескольких двоичных архивов, которые я скачал с mingw.org), чтобы скомпилировать их все.

Сегодня я загрузил последнюю версию MinGW (GCC 4.7.0, чистая установка) и перестроил весь свой код. На удивление приложение начало работать очень медленно - примерно в 30 и более раз. Между тем, как перекомпилированная версия, так и восстановленная из резервной копии работают одинаково - похоже, что проблема в gfortran DLL, которая была взята из PATH (т.е. новый MinGW независимо от версии приложения).

Что может быть источником проблемы и как ее решить? Временно вернулся к старому MinGW.


person Yury    schedule 11.07.2012    source источник


Ответы (1)


Вернувшись к этой проблеме, мне удалось найти обходной путь (но не причину).

В моей программе некоторая подпрограмма fortran, требующая больших вычислений, вызывалась из нескольких потоков на стороне C. Почему-то на mingw-gfortran 4.6.2 или 4.7.0 это замедляет работу программы в 15 раз, тогда как на 4.4.0 программа работает быстрее. Если подпрограмма вызывается только из одного потока, 4.7.0 становится равным 4.4.0 по скорости.

Поскольку в настоящее время скорость для меня достаточна, я ограничил среду вызывающего абонента одним потоком.

person Yury    schedule 08.08.2012