Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции - Чернышева.doc
Скачиваний:
7
Добавлен:
13.11.2019
Размер:
1.03 Mб
Скачать

Чернышёва Людмила Павловна

Экзамен (теория + задача)

14 лекций

Литература

  • Ясинский, Чернышёва «Мат. моделирование с помощью компьютерных сетей» 2000г. 1013

  • Воеводин «Параллельные вычисления»

  • Пайкер или Пайн ер «Перцептроны»//о нейрокомпьютерах

Содержание курса

Parsytec Power Xplorer

  • Программирование на Parsytec Power X’plorer

  • Характеристики процессора

  • Установка каналов связи между процессорами

  • Топологии(«труба», «звезда» , «клика»)

  • Синхронный обмен данными.Задание(«дерево», «звезда» , «клик»)

  • Асинхронный обмен данными

  • Определение времени вычислений

МВС 1000М. MPI

  • MPI-интерфейс передачи сообщений (осоновные понятия)

  • Константы, типы данных, структуры MPI

  • Функции передачи и приёма

Параллелизм

  • Виды параллелизма (Техн. параллельного программирования)

  • Ускорение и эффективность вычислений на МВС

Решение задач

  • Метод Рунге-Кутта 4

  • Метод прогноза коррекции

  • Метод Рунге-Кутта 2

  • Решение уравнений в частных производных

  • Метод расчётных сеток (геом. паррал.)

  • Колебания мембраны

  • Решение стационарных уравнений на МВС

  • Метод верхней релаксации

  • Оптимизация на МВС

Parsytec Power X`plorer

Общие сведения.

Parsytec Power X`plorer имеет 8 процессоров.МВС – многопроцессорная вычислительная система.

У каждого процессора есть номер и три координаты

Typede struct {

int MyProcID; // номер

int MyX; // координата по оси X

int MyY; // координата по оси Y

int MyZ; // координата по оси Z

int nProcs; // общее число процессоров

int DimX; // количество процессоров по оси X

int DimY; // количество процессоров по оси Y

int DimZ; // количество процессоров по оси Z

} RootProc_t;

Эти характеристики однозначно определяют процессор. Эта структура прописана в заголовочном файле sys/root.h

Какие значения могут принимать характеристики процессора?

MyProcID = 0,1,2,3,…,nProcs – 1 (т.к. с нуля)

MyX = 0,1,2,3…,DimX-1

MyY = 0,1,2,3…,DimY-1

MyZ = 0,1,2,3…,DimZ-1

nProcs 1,2,3,…

DimX = 1,2,3,…

DimY = 1,2,3,…

DimZ = 1,2,3,…

Как эти значения связаны между собой?

nProcs = DimX * DimY * DimZ

MyProcID = MyZ * DimX * DimY + MyY * DimX + MyX

Физически все процессоры соединены в решётку

квази – «псевдо», «якобы»

DimX = 5

DimY = 4

DimZ = 1

nProcs = 20

MyZ = 0

Характеристика процессора осуществляется следующим образом:

RootProc_t * ProcRoot;

MyProcID = GET_Root()->ProcRoot->MyProcID;

int MyProcID, nProcs;

int MyX,MyY,MyZ;

int DimX,DimY,DimZ;

MyX = GET_ROOT()->ProcRoot ->MyX; (аналогично для MyY и MyZ)

#define PC_MyProcID GET_ROOT()->ProcRoot->MyProcID

#define PC_nProcs GET_ROOT()->ProcRoot->nProcs

#define PC_MyX GET_ROOT()->ProcRoot->MyX

#define PC_DimX GET_ROOT()->ProcRoot->DimX

аналогично для MyY, MyZ, DimY, DimZ

характеристики программируются следующим образом:

MyProcID = PC_MyProcID;

#include <sys/root.h>

#include <sys/param.h>

#include <stdio.h>

Установка каналов связи между процессорами

LinkCB_t * PrewLink;

LinkCB_t * NextLink;

Прототип функции установки каналов связи:

LincCB_t * ConnectLink (int Processor, int RequestID, int & error)

Processor – номер процессора, с которым устанавливают связь;

RequestID – идентификатор запроса на установку данной связи (должен совпадать у соединяемых процессоров);

Error – адрес переменной целого типа куда записывается возможная ошибка.

Функция возвращает идентификатор канала связи

Пример: Установить канал связи с предыдущим и последующим процессором по оси x:

LincCB_t * PrewLink, * NextLink; int error;

PrewLink = ConnectLink (MyProcID-1,77,& error);

NextLink = ConnectLink (MyProcID+1,88,& error);

Установка каналов связи между процессорами программируется раздельно в соединяемых процессорах. В каждом процессоре указывается номер процессора, с которым устанавливается связь, и идентификатор запроса на установку канала связи. Если один процессор вышел на функцию установки канала связи, то он ждёт пока другой процессор выйдет на свою функцию установки связи. Неправильное программирование установки канала связи ведёт к бесконечному ожиданию.