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


чила  в  проведенных  тестах  большую  производительность



Pdf көрінісі
бет39/151
Дата26.01.2022
өлшемі1,64 Mb.
#24342
түріСеминар
1   ...   35   36   37   38   39   40   41   42   ...   151
Байланысты:
Seminar 1

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


44 
реализации  параллельных  вычислений  в  кластерных  вычислительных 
системах при наличии многопроцессорных серверов с общей памятью 
(мультипроцессоров).  
Разработка параллельных программ для мультипроцессоров может 
осуществляться в рамках следующих двух основных схем реализации: 
•  общий  подход  (как  и  в  случае  многопроцессорных  вычислитель-
ных  системах  с  распределенной  памятью)  на  основе  технологии 
передачи сообщений MPI; 
•  подход,  основанный  на  использовании  возможностей  стандарта 
OpenMP. 
Первый способ позволяет создавать мобильные параллельные про-
граммы,  которые  могут  использоваться  в  многопроцессорных  систе-
мах различного типа; второй подход обеспечивает учет возможностей 
архитектуры параллельной системы с общей памятью. 
Программный  интерфейс  приложений (API) OpenMP (см.,  напри-
мер, Chandra, R. аnd etc. (2000)) обеспечивает поддержку программи-
рования в модели общей памяти на языках C/C++ и Fortran и представ-
ляет  собой  достаточно  простой  способ  для  разработки  параллельных 
программ,  являющихся  переносимыми  (мобильными)  между  различ-
ными типами мультипроцессоров и операционных систем. 
Для  проведения  экспериментов  применялись  двух-  и  четырех- 
процессорные  сервера  вычислительного  кластера  Нижегородского 
университета. Разработка программ осуществлялась с помощью среды 
разработки Microsoft
 Visual Studio 6.0 с  компиляторами Microsoft 
32-bit C/C++ Optimizing Compiler и Intel
 C++ Compiler 5.0. При про-
ведении  расчетов  в  качестве  контрольного  примера  использовалась 
задача матричного умножения, для решения которой были подготов-
лены три различные программные реализации одного и то же алгорит-
ма умножения матриц: 
•  последовательная  программа,  разработанная  на  основе  стандарт-
ного последовательного алгоритма умножения матриц; 
•  параллельная  программа, полученная из последовательного вари-
анта  путем  добавления  соответствующих  директив OpenMP; сле-
дует отметить, что выполнение этой работы не потребовала значи-
тельных усилий; главное изменение исходной программы свелось 
к  вставке  только  одной  директивы  распараллеливания  перед  ос-
новными циклами умножения: 


 
45 
#pragma omp for private(i,j,k) nowait 
for (i=0;i for (j=0;jfor (k=0;kC[i][j]+=A[i][k]*B[k][j]; 
•  параллельная программа, использующая для организации взаимо-
действия  процессоров  механизм  передачи  сообщений MPI; для 
распределения  элементов  перемножаемых  матриц  между  процес-
сорами  была  задействована  ленточная  схема  организации  парал-
лельных  матричных  вычислений  (см.,  например, Kumar and etc. 
(1994)),  когда  на  каждый  процессор  пересылается  одновременно 
k
 строк матрицы A и 
k
 столбцов матрицы B (значение 
k
 может 
быть принято равным  , где p есть число имеющихся в системе 
процессоров).  
Результаты  экспериментов  для  двухпроцессорного (2 процессора 
Intel
 Pentium III Xeon 1000 MHz, 256 Mb RAM) в числовой форме 
сведены  в  таблице 2. В  этой  таблице  приведены  данные  по  времени 
выполнении операции перемножения матриц разного порядка (от 300 
до 2100) для  всех  трех  вариантов  программной  реализации  вычисле-
ний.  Кроме  того,  для  параллельных  программ  приведены  показатели 
получаемого ускорения времени решения задачи по сравнению с вре-
менем работы последовательной программы 
 
 
пар
посл
T
T
S
/
=

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


46 
Таблица 2.  


Достарыңызбен бөлісу:
1   ...   35   36   37   38   39   40   41   42   ...   151




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

    Басты бет