Отчет по лабораторной работе №1 по дисциплине «Параллельное программирование»
Министерство образования Российской Федерации

Санкт-Петербургский государственный электротехнический университет
Кафедра МО ЭВМ
Отчет по лабораторной работе №1
по дисциплине «Параллельное программирование»
«Исследование структуры параллельного вычислителя»
Выполнил: Листов О.В.
Группа: 4395
Проверил: Красюк В.И.
Санкт-Петербург
2009
Цель
Цель данной лабораторной работы состоит в доказательстве того, что структура используемого параллельного вычислителя является матричной.
Задачи
Необходимо изучить основные свойства параллельного вычислителя под управлением PARIX и разработать программу для доказательства предположения о матричной структуре.
Краткие сведения о PARIX
Технологические и архитектурные решения, используемые фирмой Parsytec, позволяют строить гибкие, эффективные параллельные системы, обеспечивающие как высокую концентрацию процессоров, так и тесную связь между ними. Кластерные системы допускают блочное наращивание числа узлов сети, формирование различных топологий вычислительной сети.
Программы для кластерных систем можно реализовать как с помощью системы программирования INMOS toolset, так и средствами операционной системы PARIX фирмы Parsytec. Пакет INMOS toolset обеспечивает более гибкое программирование, чем ОС PARIX (которая реализована с помощью этого пакета), однако значительно более сложное. В PARIX программист не должен задавать ни отображение сети процессов программы на сеть транспьютеров, ни их топологии. Эффективность выполнения программ, имеющая место наряду с простотой программирования, была достигнута благодаря следующим свойствам PARIX:
сеть процессоров имеет фиксированную регулярную топологию,
исполняемые программы реализуют SPMD модель (одна и та же программа, параметризованная относительно идентификатора процессора, выполняет на всех процессорах),
набор высокоуровневых коммуникационных операций использует микроядро ОС, работающее на всех процессорах и обеспечивающее маршрутизацию сообщений.

Уровни программного обеспечения PARIX
Выполнение задания
В среде PARIX создается структура данных для каждого процессора, которая доступна из кода программы. Эта структура содержит следующие константы:
PC_nProcs | количество процессоров в сети |
PC_DimX | размерность по оси X |
PC_DimY | размерность по оси Y |
PC_DimZ | размерность по оси Z |
PC_MyX | X координата процессора |
PC_MyY | Y координата процессора |
PC_MyZ | Z координата процессора |
PC_MyID | уникальный номер (идентификатор) процессора |
Создадим программу, которая будет выводить идентификатор процессора, на котором она выполняется и его координаты, а так же идентификаторы всех его соседей:
downNeigh = (myY-1)*dimX + myX;
upNeigh = (myY+1)*dimX + myX;
leftNeigh = myY*dimX + (myX-1);
rightNeigh = myY*dimX + (myX+1);
#include
#include
#include
#include
#include
#include
int main (void)
{
int myID = GET_ROOT()->ProcRoot->MyProcID;
int myX = GET_ROOT()->ProcRoot->MyX;
int myY = GET_ROOT()->ProcRoot->MyY;
int dimX = GET_ROOT()->ProcRoot->DimX;
int dimY = GET_ROOT()->ProcRoot->DimY;
int upNeigh = 0;
int leftNeigh = 0;
int rightNeigh = 0;
int downNeigh = 0;
if (myY>0) {
downNeigh = (myY-1)*dimX + myX;
}
if (myY<(dimY-1))) {
upNeigh = (myY+1)*dimX + myX;
}
if (myX>0) {
leftNeigh = myY*dimX + (myX-1);
}
if (myX<(dimX-1)) {
rightNeigh = myY*dimX + (myX+1);
}
printf ("ID = %d MyX = %d MyY = %d\n Neighbours:\nup = %d\n down = %d\n left = %d\n right = %d\n", myID, myX, myY , up, down , left, right);
return 0;
}
Результаты запуска программы
Размерность процессорной решетки | ID | MyX | MyY | MyZ | DimX | DimY | DimZ | N_procs | next | prev | up | low |
1*1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | - | - | - | - |
1*2 | 0 | 0 | 0 | 0 | 1 | 2 | 1 | 2 | - | - | 1 | - |
1 | 0 | 1 | 0 | 1 | 2 | 1 | 2 | - | - | - | 0 | |
2*1 | 0 | 0 | 0 | 0 | 2 | 1 | 1 | 2 | 1 | - | - | - |
1 | 1 | 0 | 0 | 2 | 1 | 1 | 2 | - | 0 | - | - | |
1*3 | 0 | 0 | 0 | 0 | 1 | 3 | 1 | 3 | - | - | 1 | - |
2 | 0 | 2 | 0 | 1 | 3 | 1 | 3 | - | - | - | 1 | |
1 | 0 | 1 | 0 | 1 | 3 | 1 | 3 | - | - | 2 | 0 | |
3*1 | 0 | 0 | 0 | 0 | 3 | 1 | 1 | 3 | 1 | - | - | - |
2 | 2 | 0 | 0 | 3 | 1 | 1 | 3 | - | 1 | - | - | |
1 | 1 | 0 | 0 | 3 | 1 | 1 | 3 | 2 | 0 | - | - | |
1*4 | 0 | 0 | 0 | 0 | 1 | 4 | 1 | 4 | - | - | 1 | - |
1 | 0 | 1 | 0 | 1 | 4 | 1 | 4 | - | - | 2 | 0 | |
3 | 0 | 3 | 0 | 1 | 4 | 1 | 4 | - | - | - | 2 | |
2 | 0 | 2 | 0 | 1 | 4 | 1 | 4 | - | - | 3 | 1 | |
4*1 | 0 | 0 | 0 | 0 | 4 | 1 | 1 | 4 | 1 | - | - | - |
1 | 1 | 0 | 0 | 4 | 1 | 1 | 4 | 2 | 0 | - | - | |
3 | 3 | 0 | 0 | 4 | 1 | 1 | 4 | - | 2 | - | - | |
2 | 2 | 0 | 0 | 4 | 1 | 1 | 4 | 3 | 1 | - | - | |
2*2 | 0 | 0 | 0 | 0 | 2 | 2 | 1 | 4 | 1 | - | 2 | - |
1 | 1 | 0 | 0 | 2 | 2 | 1 | 4 | - | 0 | 3 | - | |
2 | 0 | 1 | 0 | 2 | 2 | 1 | 4 | 3 | - | - | 0 | |
3 | 1 | 1 | 0 | 2 | 2 | 1 | 4 | - | 2 | - | 1 | |
2*4 | 0 | 0 | 0 | 0 | 2 | 4 | 1 | 8 | 1 | - | 2 | - |
1 | 1 | 0 | 0 | 2 | 4 | 1 | 8 | - | 0 | 3 | - | |
2 | 0 | 1 | 0 | 2 | 4 | 1 | 8 | 3 | - | 4 | 0 | |
3 | 1 | 1 | 0 | 2 | 4 | 1 | 8 | - | 2 | 5 | 1 | |
7 | 1 | 3 | 0 | 2 | 4 | 1 | 8 | - | 6 | - | 5 | |
6 | 0 | 3 | 0 | 2 | 4 | 1 | 8 | 7 | - | - | 4 | |
5 | 1 | 2 | 0 | 2 | 4 | 1 | 8 | - | 4 | 7 | 3 | |
4 | 0 | 2 | 0 | 2 | 4 | 1 | 8 | 5 | - | 6 | 2 | |
4*2 | 0 | 0 | 0 | 0 | 4 | 2 | 1 | 8 | 1 | - | 4 | - |
4 | 0 | 1 | 0 | 4 | 2 | 1 | 8 | 5 | - | - | 0 | |
1 | 1 | 0 | 0 | 4 | 2 | 1 | 8 | 2 | 0 | 5 | - | |
5 | 1 | 1 | 0 | 4 | 2 | 1 | 8 | 6 | 4 | - | 1 | |
3 | 3 | 0 | 0 | 4 | 2 | 1 | 8 | - | 2 | 7 | - | |
7 | 3 | 1 | 0 | 4 | 2 | 1 | 8 | - | 6 | - | 3 | |
6 | 2 | 1 | 0 | 4 | 2 | 1 | 8 | 7 | 5 | - | 2 | |
2 | 2 | 0 | 0 | 4 | 2 | 1 | 8 | 3 | 1 | 6 | - | |
3*3 | 0 | 0 | 0 | 0 | 3 | 3 | 1 | 9 | 1 | - | 3 | - |
6 | 0 | 2 | 0 | 3 | 3 | 1 | 9 | 7 | - | - | 3 | |
2 | 2 | 0 | 0 | 3 | 3 | 1 | 9 | - | 1 | 5 | - | |
1 | 1 | 0 | 0 | 3 | 3 | 1 | 9 | 2 | 0 | 4 | - | |
3 | 0 | 1 | 0 | 3 | 3 | 1 | 9 | 4 | - | 6 | 0 | |
8 | 2 | 2 | 0 | 3 | 3 | 1 | 9 | - | 7 | - | 5 | |
7 | 1 | 2 | 0 | 3 | 3 | 1 | 9 | 8 | 6 | - | 4 | |
5 | 2 | 1 | 0 | 3 | 3 | 1 | 9 | - | 4 | 8 | 2 | |
4 | 1 | 1 | 0 | 3 | 3 | 1 | 9 | 5 | 3 | 7 | 1 |
На основе результатов запуска постараемся доказать или опровергнуть то, что структура вычислителя соответствует ниже приведенной матрице
-
12
13
14
15
8
9
10
11
4
5
6
7
0
1
2
3
Рассмотрим схемы расположения процессоров в зависимости от параметров запуска
Для процессоров 0, 1
Вариант 1:
Размерность 2х1:
-
0
1
Размерность 3х1:
-
0
1
2
Размерность 4х1:
-
0
1
2
3
Размерность 2х2:
-
2
3
0
1
Размерность 2х4:
-
6
7
4
5
2
3
0
1
Вариант 2:
Размерность 1х2:
-
1
0
Размерность 1х3:
-
2
1
0
Размерность 1х4:
-
3
2
1
0
На схемах наглядно отражено, что структура вычислителя имеет матричный вид. Т.е. расположение конкретного процессора соответствует расположению в матрице, не зависимо от параметров запуска.
Выводы
В данной лабораторной работе были изучены основы PARIX. Мы познакомились с атрибутами процессоров и структурой параллельного вычислителя. На основе знания о неизменности структуры вычислителя и используя доступные данные среды PARIX, удалось доказать, что структура вычислителя является матричной.
страница 1
скачать
Другие похожие работы: