Основы параллельных вычислений

Страницы работы

3 страницы (Word-файл)

Содержание работы

Зачет по лабораторным работам курса

«Основы параллельных вычислений»

(ПМ, 2004)

Корнеев В.Д.

Параллельные алгоритмы задач:

(Алгоритмы пояснить на рисунке).

1. Умножение матрицы на вектор (MPI);

2. Умножение матрицы на матрицу (MPI, OpenMP);

3. Решение систем линейных уравнений методом Гаусса (два алгоритма) (MPI);

4. Решение систем линейных уравнений методом простой итерации (MPI, OpenMP);

5. Решение систем линейных уравнений методом сопряженных градиентов (MPI, OpenMP);

6. Умножение матриц на вычислительной системе с топологией двумерная решетка (MPI);

5. Решение задачи Пуассона в 3D пространстве методом Зейделя (MPI);

6. Сортировка множеств (MPI).

Язык MPI

(Семантика MPI–функций)

(Выполнение этих функций пояснить на рисунке)

Парные взаимодействия:

  1. MPI_Send(…),  MPI_Recv(…);
  2. MPI_Isend(…),  MPI_Irecv(…),  MPI_Wait(…),  MPI_Test(…);
  3. MPI_Ssend(…);
  4.  MPI_Sendrecv(…);

Коллективные взаимодействия:

  1. MPI_Barrier(..);
  2. MPI_Bcast(…);
  3. MPI_Scatter(…),  MPI_Scatterv(…);
  4. MPI_Gather(…),  MPI_Gathrv(…),  MPI_Allgather(…);

Строители MPI-типов:

  1. MPI_Type_vector(…),   MPI_Type_hvector(…);
  2. MPI_Type_indexed(…),   MPI_Type_hindexed(…);
  3. MPI_Type_struct(…).

Функции задания топологий и связанные с ними:

  1. MPI_Cart_creatr(..);
  2. MPI_Graph_create(…);
  3. MPI_Dims_create(…);
  4. MPI_Cart_shift(…);

Язык OpenMP

(Семантика OpenMP–директив)

Модель распараллеливания.

Главная директива задания нитей:

#pragma omp parallel [clause clause ...]

{

. . .

}

clause:    if(условие)                    

private(list)

shared(list) 

firstprivate(list)

copyin(list)

reduction(operator:list)

Директивы разделения работ по нитям

#pragma omp for [clause clause ...]

{

. . .

}

clause:    schedule(type[,chink])

ordered

private(list)

shared(list)

firstprivate(list)

lastprivate(list)

reduction(operator:list)

nowait

Параллельные секции

#pragma omp sections [clause clause ...]

{ . . .

. . .

#pragma omp section

{ . . .

. . .

}

#pragma omp section

{ . . .

. . .

}

}     // – end sections

clause:    private(list)

firstprivate(list)

lastprivate(list)

reduction(operator:list)

nowait

Исполнение одной нитью

#pragma omp single [clause clause ...]

{

. . .

}

clause:    private(list)

firstprivate(list)

nowait

Явное управление распределением работы

Директивы синхронизации

#pragma omp master

{

. . .

}

#pragma omp critical[name]

{

. . .

}

#pragma omp barrier

#pragma omp atomic

Информация о работе