Сначала казалось, что преобразование проходит гладко. Уже после одного дня
работы параллельная версия программы была написана и успешно компилировалась.
Первая ошибка, связанная с программированием синхронизирующего барьера, была
быстро обнаружена и исправлена. Полученная программа испытывалась с одним и с
десятью активными процессами и в обоих случаях был получен результат,
совпадающий с результатами программы на суперЭВМ CRAY. Отладка закончена!
Осталось только прогнать программу для различного числа процессов, чтобы
получить информацию о достигаемом ускорении. Такая информация была быстро
получена, но при грубой оценке результатов было обнаружено, что прогон с пятью
активными процессами дает ответ, отличающийся от полученного в других случаях.
Отличие было небольшим, обычно в четвертом или пятом десятичном знаке, и
проявлялось только после прохождения нескольких временных шагов. Кроме того,
успешные прогоны с пятью активными процессами для одинаковых входных данных
давали разные результаты (отличие снова состояло в четвертом или пятом
десятичном знаке). Началась интенсивная отладка. Было очень трудно продвигаться
вперед, главным образом из-за отсутствия средств отладки, которые бы не влияли
на выполнение программы. Было замечено, что для целей отладки бесполезно
вставлять в программу оператор WRITE. Проблема просто исчезала.
Ясно, что присутствие в программе операторов WRITE приводило к нарушению
синхронизации некоторых критических событий и маскированию искомой ошибки. В
надежде локализовать ошибку на одной из трех последовательных стадий была
сделана версия программы, которая позволяла любой набор стадий выполнять с
одним-единственным активным процессом, а остальную часть программы, как и было
задумано в исходной программе, всеми активными процессами. Были сделаны прогоны
программы для всех восьми возможных комбинаций. Результаты вызвали недоумение,
но указали на точку "просачивания" через синхронизирующие барьеры. Однако
интенсивная проверка этой части программы ни к чему не привела. После двух дней
и ночей работы начало казаться, что наши затруднения вызваны только
неисправностями в оборудовании машины. По истечении отведенного времени мы,
озадаченные, вернулись домой.