программное обеспечение параллельных вычислений

 

Непреднамеренное совместное использование ресурсов

 
 

Эта проблема возникла в процессе преобразования программы для исследования излучательного переноса, реализованной на суперЭВМ CRAY-1, в многозадачную программу для ЭВМ HEP. Решаемая задача является задачей с временной зависимостью, а вычисление для каждого временного шага имеет три последовательные стадии.

В программе рассматривается только случай сферической симметрии, и на второй стадии (ядро алгоритма) - пошаговая обработка серии пучков (каждый пучок касателен к сферической оболочке).

Интегрирование по каждому пучку может производиться независимо от интегрирования по другим пучкам, что позволяет выполнить естественное распараллеливание задачи. Таким образом, в программе для ЭВМ HEP образуется группа параллельных процессов, каждый из которых запускается при обнаружении пучка, требующего вычислений, выполняет это вычисление и вновь ищет новый пучок.

Первая и третья стадии этого вычисления также имеют простые структуры, состоящие в основном из двойных вложенных циклов DO с независимыми внешними итерациями. Нетрудно было установить несколько мест, где требовалась синхронизация парадельных процессов:

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

2. Следовало позаботиться о том, чтобы никакие два процесса не выбрали для работы один и тот же пучок и чтобы никакой пучок не остался необработанным.

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

 
 
 
Copyright (c) 2009. Использование материалов данного сайта возможно только при проставлении активной, не закрытой от индексации гиперссылки. http://soft-tlt.ru