Распараллеливание процессов - Администрирование параллельных процессов

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

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

Есть две проблемы, которые всегда возникают, когда необходимо решать подобные задачи:

    1. Первая: недостаток времени. Если задача выполняется в течение шести недель, было бы очень неплохо, если бы время ее счета сократилось до шести дней. 2. Вторая: недостаток памяти. Предположим, к примеру, мы решаем численно систему дифференциальных уравнений на разностной сетке. Размерность сетки всегда ограничена объемом оперативной памяти компьютера. Нет ничего невероятного в том, что увеличивая размерность разностной сетки (увеличивая детализацию) мы можем получить интересные тонкие эффекты, которые, хотя и описываются исходными уравнениями, но скрыты от нас слишком грубой сеткой.

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

Похожие статьи




Распараллеливание процессов - Администрирование параллельных процессов

Предыдущая | Следующая