Программа на портландской группе FORTRAN pgf90 завершается неудачно при компиляции с -fast, успешно с -fast -Mnounroll - PullRequest
1 голос
/ 25 января 2011

Этот код долго гудел долго, пока мы недавно не обнаружили крайний случай, когда он молча терпит неудачу - никаких ошибок не возвращалось.Недостаток довольно тонкий.Мы можем заставить код работать без всяких проблем в крайнем случае:

1) компиляцией с любым набором параметров, включая -traceback или отладкой (-g или -gopt);

2) компиляцией с -fast -Mnounroll;

3) компиляция с оптимизацией <2; <p>4) добавление операторов WRITE в код для определения местоположения ошибки;

Другими словами, большинство инструментов, полезных для отладкиошибка - фактически приводит к исчезновению ошибки.

Я проверяю любую информацию о сбоях, связанных с развертыванием цикла или другой оптимизацией, и об их устранении.

Заранее всем спасибо.

1 Ответ

0 голосов
/ 25 января 2011

Я не знаком с pgf (черт возьми, прошло уже 10 лет с тех пор, как я использовал любой фортран), но вот несколько общих советов по отслеживанию (потенциальных) ошибок компилятора:

  1. Упростим воспроизводимый случай. То есть Попробуйте воспроизвести проблему с помощью похожего фрагмента кода, в котором удалены все лишние детали. Это полезно, потому что: а) вы не будете колебаться, публикуя код публично, и б) если кто-то попытается диагностировать проблему, ему будет легче с меньшим количеством окружающего материала.

  2. Поговорите с экспертами: если у вас есть контракт на поддержку pgf, используйте его! На их сайте есть форма запроса поддержки . Если нет, то есть раздел «Форумы пользователей», где вы можете разместить свою информацию - кто-то другой может найти лучший способ ее решения, или сотрудник может зарегистрировать вашу проблему.

  3. Перепроверьте свой код. Возможно ли, что вы полагаетесь на какое-то неопределенное поведение ? Это то, что может заставить вашу программу переключаться при изменении уровней оптимизации. Я не говорю, что ошибки компилятора невозможны, но это может быть и хаком в вашем коде.

Надеюсь, это полезно.

...