Принципы построения и использования параллельных вычислительных систем

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

Одно из решений данной проблемы связано с реализацией концепции параллелизма на уровне потоков (Thread Level Parallelism – TLP). Если запущенное на исполнение задание не в состоянии загрузить работой все функциональные устройства, то можно разрешить процессору выполнять более чем одну задачу, создавая тем самым второй поток (тред), чтобы он загрузил простаивающие устройства. Здесь есть аналогия с многозадачной операционной системой (ОС): чтобы процессор не простаивал, когда задача оказывается в состоянии ожидания (например, завершения ввода-вывода), ОС переключается на выполнение другой задачи. Наиболее эффективной на сегодня стала архитектура с одновременным выполнением потоков (Simultaneous Multi-Threading – SMT). В такой ситуации на каждом новом такте на выполнение в какое-либо исполнительное устройство может направляться команда любого потока – в зависимости от вычислительного алгоритма [5].

В общем случае распределенные вычисления (Distributed Computing) – это способ решения трудоемких вычислительных задач с большим объемом однотипных вычислений или связанных с колоссальными количествами обрабатываемых данных. Такие вычисления проводятся с использованием многоядерных или многопроцессорных систем на одном компьютере или на двух и более обычных компьютерах, объединенных в сеть.

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

Принципы формирования параллелизма

Параллельные вычисления – это такие процессы обработки данных, когда несколько однотипных или различных операций могут выполняться одновременно на одном вычислительном устройстве или на нескольких компьютерах, объединенных в локальную сеть. Реализовать параллельные вычисления можно только при выполнении определенных принципов построения архитектуры вычислительной среды [6]:

• независимость функционирования отдельных компьютерных устройств (устройства ввода-вывода, память, процессоры, звуковые и видео-адаптеры и пр.);

• наличие избыточности элементов вычислительной системы (за счет организации специализированных устройств, например формирование многоуровневой памяти или дублирование функций на базе однотипных стандартных устройств).

При организации параллельных вычислений возможно несколько режимов исполнения независимых частей программы.

Многозадачный режим (режим с разделением времени). В данном случае для выполнения нескольких процессов используется один процессор. Такой режим можно назвать квазипараллельным, так как при полной загрузке процессора одной задачей все остальные дожидаются своей очереди. Разделение времени выполнения процессов на различных устройствах может повысить эффективность. Например, если один вычислительный процесс не работает из-за ожидания ввода или вывода данных, то можно запустить другой процесс на другом устройстве. Многозадачный режим можно использовать при начальной подготовке параллельных вычислений.

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

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