Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
final1-35-shpora.doc
Скачиваний:
10
Добавлен:
21.04.2019
Размер:
4.78 Mб
Скачать

Декартова топология

MPI_CART_CREATE(COMM, NDIMS, DIMS, PERIODS, REORDER, COMM_CART,IERR)

INTEGER COMM, NDIMS, DIMS(*), COMM_CART, IERR

LOGICAL PERIODS(*), REORDER

Создание коммуникатора COMM_CART, обладающего декартовой топологией, из процессов коммуникатора сомм. Параметр NDIMS задает размерность получаемой декартовой решетки, DIMS (I) - число элементов в измерении I, 1<I<NDIMS. PERIODS - логический массив из NDIMS элементов, определяющий, является ли решетка периодической (значение .TRUE.) вдоль каждого измерения, REORDER - логический параметр, определяющий, что при значении .TRUE, системе разрешено менять порядок нумерации процессов для оптимизации распределения процессов по физическим процессорам используемого параллельного компьютера.

Процедура является коллективной, а значит, должна быть вызвана всеми процессами коммуникатора сомм. Если количество процессов в задаваемой топологии COMM_CART меньше числа процессов в исходном коммуникаторе сомм, то некоторым процессам может вернуться значение MPI_COMM_NULL, a значит, они не будут принимать участия в создаваемой топологии. Если количество процессов в задаваемой топологии больше числа процессов в исходном коммуникаторе, то вызов будет ошибочным.

Топология графа

MPI_GRAPH_CREATE(COMM, NNODES, INDEX, EDGES, REORDER, COMM_GRAPH, IERR)

INTEGER COMM, NNODES, INDEX(*), EDGES(*), COMM_GRAPH, IERR LOGICAL REORDER

Создание на основе коммуникатора сомм нового коммуникатора COMM_GRAPH с топологией графа. Параметр NNODES задает число вершин графа, INDEX(i) содержит суммарное количество соседей для первых I вершин. Массив EDGES содержит упорядоченный список номеров процессов-соседей всех вершин. Параметр REORDER при значении .TRUE, означает, что системе разрешено менять порядок нумерации процессов.

Процедура является коллективной, а значит, должна быть вызвана всеми процессами исходного коммуникатора. Если NNODES меньше числа процессов коммуникатора сомм, то некоторым процессам вернется значение MPI_COMM_NULL, а значит, они не будут принимать участия в создаваемой топологии. Если NNODES больше числа процессов коммуникатора сомм, то вызов процедуры является ошибочным.

  1. Программирование мвс с общей памятью. Процессы и потоки в posix

+: не нужно перепроектировать проект, хорошая переносимость.

-: проблема масштабируемости; проблема увеличения числа процессов.

Процессы и потоки в POSIX.

Решают 2 проблемы:

  1. Поток как «облегченный» процесс (light-weight process). Создание потока может занимать меньше 10% времени создания «полноценного» потока.

  2. Упрощение обмена информацией между параллельными активными потоками. Потоки одного процесса разделяют адресное пространство процесса.

Процессы:

Обзор процесса:

-сегмент кодов; - сегмент данных; - динамический сегмент; - сегмент стека

Фазы работы процесса:

Прикладная (пользовательская) – имеет доступ к сегментам;

Системная – доступ к системным структурам данных.

Потоки: threads

Общие части потока

Раздельные части

Коды команд процесса

Набор регистров, включая РС и указатель стека

Сегмент данных

Стек (хранит лок, дин. Переменные и адреса возвратов и подпрограмм)

Открытые файлы (дескрипторы)

Идентификатор потока

Обработчик сигналов, настройки для обработки сигналов

Маска сигналов

Текущий рабочий каталог

приоритет

Идентификатор пользователя группы

Errno (номер ошибки)

Создание потоков:

- при запуске программы вызовем exeс, создается 1 поток – начальный поток (initial thread)

- добавочные потоки создаются thread_create

- задается функция, которая вызывается при запуске потока – начальная функция потока

- возвращает id порожденного потока pthread_t

Завершение потоков:

- явное завершение потока pthread_exit

- неявное – возврат из начальной функции потока

Pthread_self – возвращает id потока

Pthread_join – ожидание завершения потока

Pthread_detach – «отсоединение» потока (по завершению все ресурсы освобождаются, никакой другой процесс не может ждать его завершения)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]