126
прирост производительности достигнут во многом благодаря исполь-
зованию потоковых операций. Однако, следует помнить о возможных
зависимостях внутри циклов. Для диагностики подобных проблем у
компилятора существует соответствующий аппарат (например, опция
Qvec_report [1,2,3]). В случае, если пользователь, зная алгоритм, уве-
рен в отсутствии проблемы, о которой сигнализирует компилятор, то с
помощью специальных директив возможно форсированное использо-
вание векторных инструкций независимо от результатов автоматиче-
ского
анализа зависимостей.
Применение директив компилятора и
функций времени выполне-
ния, описываемых в стандарте OpenMP[5], позволяет распараллелить
программу для запуска на системах с общей памятью (в случае с архи-
тектурой IA-32 – SMP от двух до четырех процессоров, Itanium – до
512 процессоров). OpenMP является переносимым промышленным
стандартом, поддерживаемым большим количеством производителей.
Внедрение в программу директив OpenMP позволило получить
почти линейное ускорение на всех рассмотренных платформах, как это
видно из графиков. Ввиду переносимости стандарта и реализации его в
Fortran и С, один и тот же набор директив использовался как в 32-
битной Linux и Windows-версиях приложения, так и на 64-битной ар-
хитектуре. Следует отметить относительную простоту использования
OpenMP по сравнению с реализацией той же
функциональности явным
заданием потоков с помощью вызовов
функций операционной систе-
мы. Как правило, объем дополнительного кода невелик, что позволяет
без больших затрат распараллеливать уже существующие последова-
тельные приложения. В рассматриваемом примере для параллелизации
цикла размером около 700 строк потребовалось 20 строк кода, описы-
вающего директиву. Таким образом, применение OpenMP обеспечива-
ет не только эффективное использование многопроцессорных узлов
кластера, но и высокую переносимость программ между операцион-
ными системами и различными архитектурами.
Набор специализированных библиотек Intel®
Performance Libraries
также позволяет эффективно использовать аппаратные возможности
архитектур Intel. Библиотеки предоставляют интерфейс к высокоопти-
мизированным подпрограммам, которые находят применение в таких
областях, как цифровая обработка сигналов, решение систем линейных
уравнений, обработка аудио- и видео информации. Кроме того, функ-
127
циональность библиотек расширяет возможности компилятора, огра-
ниченного рамками стандарта языка. В качестве примера можно при-
вести шкалируемость точности а, следовательно, и скорости вычисле-
ния трансцендентных математических функций. Эффект от использо-
вания библиотек отражен на графиках 2 и 3 и особенно ярко проявля-
ется на IA-64, что обусловено наличием технологии EPIC.
Описанные выше подходы могут быть применены как по отдель-
ности, так и совместно. Последнее приближает к максимуму общую
эффективность распараллеливания на многопроцессорных компьюте-
рах. Глядя на графики, можно оценить влияние различных комбинаций
на производительность.
В заключение авторы хотят еще раз подчеркнуть важность полно-
ценного использования каждого вычислительного узла, входящего в
состав кластера. Полученные результаты говорят о том, что учет осо-
бенностей архитектуры в сочетании с возможно более полным задей-
ствованием возможностей мультипроцессоров с общей памятью по-
зволяет на порядок повысить эффективность работы вычислительной
системы в целом. Это позволяет понизить стоимость кластера при со-
хранении сложности решаемых задач, либо использовать уже имею-
щуюся аппаратуру для решения задач большей сложности.
Достарыңызбен бөлісу: