Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник лекций по предмету Методы Программирова...doc
Скачиваний:
43
Добавлен:
22.09.2019
Размер:
4.83 Mб
Скачать

Факторы, влияющие на производительность, и способы ее повышения.

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

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

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

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

4. Коммутационные сети. Они определяют накладные расходы – время задержки передачи сообщения. Оно зависит от латентности (начальной задержки при посылке сообщений) и длины передаваемого сообщения. На практике о величине латентности судят по времени передачи пакета нулевой длины.

5. Программное обеспечение. Операционная система, драйвера сетевых устройств, программы, обеспечивающие сетевой интерфейс нижнего уровня, библиотека передачи сообщений (MPI), компиляторы оказывают огромное влияние на производительность параллельного компьютера.

Лекция 7

Принципы разработка параллельных алгоритмов.

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

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

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

  • определить необходимую (или доступную) для решения задачи вычислительную систему и выполнить распределение имеющего набора подзадач между процессорами системы.

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

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

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

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

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

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