Р. Г. Стронгина. Ниж- ний Новгород: Изд-во Нижегородского университета, 2002, 217 с


ПРОБЛЕМЫ ЭФФЕКТИВНОГО ИСПОЛЬЗОВАНИЯ УЗЛОВ



Pdf көрінісі
бет94/151
Дата26.01.2022
өлшемі1,64 Mb.
#24342
түріСеминар
1   ...   90   91   92   93   94   95   96   97   ...   151
ПРОБЛЕМЫ ЭФФЕКТИВНОГО ИСПОЛЬЗОВАНИЯ УЗЛОВ  
НА ОСНОВЕ АРХИТЕКТУР INTEL В ГЕТЕРОГЕННЫХ КЛАСТЕРАХ 
А.А. Нарайкин, И.В. Лопатин 
Нижегородская лаборатория Intel (INNL) 
В  данной  работе  исследованы  некоторые  пути  увеличения  произ-
водительности  и  возможности  распараллеливания  прикладных  про-
грамм на архитектурах IA-32 и IA-64. Также рассмотрено применение 
функций,  входящих  в  состав  библиотек Intel® Performance Libraries. 
На  примере  программы  моделирования  водной  поверхности Sunset 
исследованы возможности эффективного применения этих средств для 
научных  приложений  на  архитектурах IA-32 и IA-64. Получены  ре-
зультаты для операционных систем Windows 2000 Professional и Linux 
(дистрибутив RedHat 7.1). 
Несмотря  на  бурное  развитие  вычислительной  техники,  увеличи-
вающаяся  сложность  прикладных  задач  заставляет  максимально  ис-
пользовать возможности, предоставляемые архитектурой и программ-
ными  средствами  разработки.  При  этом  часто  бывает  важно  обеспе-
чить  соответствие  кода  стандартам  и  сохранить  переносимость  про-
грамм.  Этих  целей  можно  достичь,  применяя  специализированные 
библиотеки  и  задействуя  возможности  оптимизирующих  компилято-
ров. 
При выполнении программ на гетерогенных кластерах можно вы-
делить  три  уровня  параллелизма – команд  процессора,  многопроцес-
сорных  узлов  с  общей  памятью и, наконец, коммуникаций между уз-
лами.  На  общую  производительность  кластера  существенно  влияет 
эффективность выполнения программ на всех трех уровнях, однако в 
данной  работе  проблемы  коммуникации  узлов  не  рассматриваются. 
Использование оптимизации, специфической для архитектуры процес-


 
125 
сора,  поддержка  векторных  вычислений  и  стандарта OpenMP позво-
ляют  достичь  максимальной  производительности  узлов  с  минималь-
ными затратами времени и изменениями исходного кода. Эти возмож-
ности  реализованы  как  в  компиляторах Intel® C/C++ и Intel® Fortran 
[1], так и в наборе специализированных библиотек Intel® Performance 
Libraries [2]. 
Для  иллюстрации  применения  данных  технологий  было  рассмот-
рено приложение Sunset [3], осуществляющее численное моделирова-
ние изображения водной поверхности в реальном времени. Его досто-
инствами  для  такого  рода  экспериментов  являются  относительно  не-
большой размер ядра (около 50 килобайт) в сочетании с интенсивными 
вычислениями  с  плавающей  точкой,  которые  занимают  более 98% 
времени  работы  приложения  (остальное  время  уходит  на  вывод  изо-
бражения).  Существуют  как  С,  так  и Fortran-версия  вычислительного 
ядра, что позволяет оценить работу компиляторов сразу для двух язы-
ков. Приложение работает на архитектурах IA-32 и IA-64 под управле-
нием как Windows, так и Linux. Производительность легко измеряется 
количеством кадров в секунду, которое показывается в нижней части 
окна программы. 
Рассмотрение использования параллелизма на разных уровнях ло-
гично  начать  с  самого  нижнего – команд  процессора.  Поддержка  па-
раллелизма  на  уровне  инструкций,  осуществляемая  компилятором, 
позволяет избежать трудоемкого низкоуровневого кодирования, обес-
печивая при этом сопоставимую производительность. На архитектуре 
IA-32  это,  прежде  всего,  выражается  в  возможности  автоматической 
поддержки расширенных наборов инструкций MMX, SSE и SSE2, ра-
ботающих  по  принципу SIMD (Single Instruction Multiple Data), кото-
рые позволяют выполнять однотипные операции над несколькими ар-
гументами за одну команду. На IA-64 компилятор позволяет програм-
мисту использовать систему команд, построенную по принципу EPIC 
(Explicitly Parallel Instruction Computing), дословно, допускающую па-
раллелизм в явном виде[4]. 
На графиках
*
 1,2 виден эффект от применения данного подхода на 
IA-32,  достигаемый  с  помощью  опций  компилятора (QxK 

 оптимизация для Pentium III, QxW – Pentium 4). Столь существенный 
                                                           
*
 Результаты приведены для версии, реализованной на языке С. Аналогичные 
результаты получены для Fortran 90. 


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. 
Описанные  выше  подходы  могут  быть  применены как по отдель-
ности,  так  и  совместно.  Последнее  приближает  к  максимуму  общую 
эффективность  распараллеливания  на  многопроцессорных  компьюте-
рах. Глядя на графики, можно оценить влияние различных комбинаций 
на производительность. 
В заключение авторы хотят еще раз подчеркнуть важность полно-
ценного  использования  каждого  вычислительного  узла,  входящего  в 
состав кластера. Полученные результаты говорят о том, что учет осо-
бенностей архитектуры в сочетании с возможно более полным задей-
ствованием  возможностей  мультипроцессоров  с  общей  памятью  по-
зволяет  на  порядок  повысить  эффективность  работы  вычислительной 
системы в целом. Это позволяет понизить стоимость кластера при со-
хранении  сложности  решаемых  задач,  либо  использовать  уже  имею-
щуюся аппаратуру для решения задач большей сложности. 
 


Достарыңызбен бөлісу:
1   ...   90   91   92   93   94   95   96   97   ...   151




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет