1

Я использую CFD-код, написанный на Fortran. Некоторые его части были распараллелены с помощью OpenMP. Даже если я включу OpenMP и использую те же параметры компилятора (-O3) в Windows, что на машине Linux, я получаю разные результаты. После попытки отключить оптимизацию (-O0) и добавления (-fp-model source) в мои параметры компилятора он показывает только NaN после 2 шагов итерации. Есть ли другая причина, что там разные результаты, и как я могу гарантировать, что они одинаковы)Различные результаты в зависимости от операционной системы

Спасибо, Sebastian

PS: Обе машины используют один и тот же Intel Fortran Compiler 2013, 64 бит и имеют процессор Intel Xeon.

+0

Насколько отличаются результаты? –

+0

Они расходятся на машине linux во время работы еще на 1000 шагов времени на машине Windows. – Sebu

+0

Вы на самом деле не ответили на мой вопрос - каковы различия между числами, которые вы получаете от версии Windows и версии Linux? Из того, что вы написали, невозможно исключить нестабильный алгоритм (реализация). –

ответ

1

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

Как предполагает HPMark, небольшие изменения можно ожидать при смене платформ. Большие различия указывают на то, что у вас есть какой-то компилятор или системный код и вам нужна работа по портированию. При возникновении серьезных проблем, когда вы поворачиваете DOWN, уровень оптимизации может быть ошибкой памяти.

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

+0

У меня разные результаты, даже при полностью отключенном параллелизме. Я узнал, что компиляция с источниками -O1 и -fp-model дала мне те же результаты на обеих машинах. Таким образом, более агрессивная оптимизация отвечает за разные результаты. Поэтому я должен думать о том, стоит ли выигрыш в производительности. – Sebu

Смежные вопросы