Файл: Синхронизация. Два вида синхронизации. Синхронизация.docx

ВУЗ: Не указан

Категория: Решение задач

Дисциплина: Не указана

Добавлен: 26.10.2023

Просмотров: 23

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


В частности, ему нужно как-то определить, какой процессор содержит необходи­мые ему данные, и послать этому процессору сообщение с запросом копии данных. Затем процессор 0 блокируется до получения ответа. Когда процессор 1 получает сообщение, программное обеспечение должно проанализировать его и отправить назад необходимые данные. Когда процессор 0 получает ответное сообщение, про­граммное обеспечение разблокируется и продолжает работу.

В мультикомпьютере для взаимодействия между процессорами часто исполь­зуются примитивы send и receive. Поэтому программное обеспечение мультикомпьютера имеет более сложную структуру, чем программное обеспечение мульти­процессора. При этом основной проблемой становится правильное разделение данных и разумное их размещение. В мультипроцессоре размещение частей не влияет на правильность выполнения задачи, хотя может повлиять на производи­тельность. Таким образом, мультикомпьютер программировать гораздо сложнее, чем мультипроцессор.

  1. Сетевая система. Сеть рабочих станций.

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

Рабочие станции


Рабочая станция (workstation) — подключенный к сети компьютер, через который пользователь получает доступ к ее ресурсам. Часто рабочую станцию (равно как и пользователя сети, и даже прикладную задачу, выполняемую в сети) называют клиентом сети. В качестве рабочих станций могут выступать как обычные компьютеры, так и специализированные — «сетевые компьютеры» (NET PC — Network Computer). Рабочая станция сети на базе обычного компьютера функционирует как в сетевом, так и в локальном режимах. Она оснащена собственной операционной системой и обеспечивает пользователя всем необходимым для решения прикладных задач. Рабочие станции иногда специализируют для выполнения графических, инженерных, издательских и других работ. Рабочие станции на базе сетевых компьютеров могут функционировать, как правило, только в сетевом режиме при наличии в сети сервера приложений.. Отличие сетевого компьютера (Network Personal Computer — NET PC) от обычного в том, что он максимально упрощен: классический NET PC не содержит дисковой памяти (часто его называют бездисковым ПК). Он имеет упрощенную материнскую плату, основную память, а из
внешних устройств присутствуют только дисплей, клавиатура, мышь и сетевая карта обязательно с чипом ПЗУ BootROM, обеспечивающим возможность удаленной загрузки операционной системы с сервера сети (это классический «тонкий клиент» сети). Для работы, например, в интранет-сети такой компьютер должен иметь столько вычислительных ресурсов, сколько требует веб-браузер.

Поскольку оставить клиента сети совсем без возможностей локального использования компьютера, например, для работы в текстовом или табличном процессоре со своим персональным «рабочим столом», не совсем гуманно, то иногда используются версии сетевого компьютера, имеющего небольшую дисковую память. Сменные дисководы и флэшдиски должны отсутствовать в целях обеспечения информационной безопасности: чтобы через них не занести в сеть (или вынести) нежелательную информацию — программы, данные, компьютерные вирусы. Конструктивно NET PC выполнены в виде компактного системного блока — подставки под монитор (Network Computer TC фирмы Boundless Technologies) или встроенной в монитор системной платы (NET PC Wintern фирмы Wyse Technology).

  1. Три класса приложений. Примеры.

Многопоточные системы

Оконные системы, GUI

-Многопроцессорные операционные системы и системы разделения времени.

-Системы реального времени, управляющие техническими объектами.

Причина — организовать код в виде набора потоков проще, чем в виде большой последовательной программы.

Распределённые вычислени

-Сетевые файловые серверы

-Распределённые системы баз данных

-Web-серверы

-Системы, объединяющие компоненты производства

Отказоустойчивые системы

Причины — интеграция систем, удалённый доступ к данным, повышение надёжности системы.

Синхронные параллельные вычисления

Синхронные параллельные вычисления.

Научные вычисления — математическое моделирование физических процессов в машиностроении, физике, науках о Земле, астрономии, медицине

CAD/CAE: FEA, CFD, MBD, optimization

Графика, обработка и синтез изображений

Сложные комбинаторные или оптимизационные задачи, экономическое моделирование.

Причина — ускорение вычислений, решение задач большей размерности.

  1. Пять парадигм параллельных программных приложений.

Существует ряд схем взаимодействия самостоятельных частей параллельного приложения. Кратко опишем основные.



Итеративный параллелизм используется для реализации параллелизма в итеративной программе (чаще всего в циклах). Такой параллелизм характерен для распараллеливания по данным в согласованных параллельных вычислениях.

Рекурсивный параллелизм используется в программах с одной или несколькими рекурсивными процедурами, вызов которых независим. Каждый рекурсивный вызов порождает один или несколько новых процессов, которые независимо работают над решением задачи. В рамках такой парадигмы часто реализуются технологии «разделяй и властвуй» или «перебор с возвращением».

Итеративный и рекурсивный параллелизм основан на приемах, известных в последовательном программировании. Следующие схемы взаимодействия характерны именно для параллельных программ.

«Производители и потребители» – модель взаимодействия неравноправных процессов по поводу общих данных. Одни процессы «производят» данные, другие – их «потребляют». Часто такие процессы организуются в конвейер, через который проходит информация. Каждый процесс конвейера потребляет выход своего предшественника и производит входные данные для своего последователя. Другой распространенный способ организации потоков – древовидная структура, на ней основан, в частности,

принцип дихотомии.

«Клиенты и серверы» – наиболее распространенная модель взаимодействия процессов в распределенных системах. Клиентский процесс запрашивает (возможно, неоднократно) данные у сервера и ожидает ответа, затем использует полученные данные по своему усмотрению. Серверный процесс ожидает запроса от клиента, далее в соответствии с поступившим запросом обрабатывает данные и возвращает запросившему их процессуклиенту. Таким образом, в отличие от предыдущего случая, между клиентом

И сервером необходимо установить двустороннюю связь. Сервер может быть реализован как одиночный процесс, обслуживающий одновременно несколько клиентских процессов. Сервер может быть многопоточной программой, каждый поток которой обслуживает своего клиента. Если клиент

и сервер выполняются на одном компьютере, то они представляют собой параллельное программное обобщение процедур: сервер исполняет роль процедуры, а клиент ее вызывает. Однако если коды клиента и сервера разнесены в пространстве, то для синхронизации используются специальные технологии, такие как удаленный вызов процедур или рандеву.


«Управляющий и рабочие» – модель организации вычислений, при которой существует поток, координирующий работу всех остальных пото-

ков. Как правило, управляющий поток распределяет данные, собирает и анализирует результаты. Эта парадигма часто применяется в задачах оптимизации и статистической обработки информации, при обработке изображений и других научных вычислениях с итеративными алгоритмами.

«Взаимодействующие равные» – модель, в которой исключен не занимающийся непосредственными вычислениями управляющий поток. Распределение работ в таком приложении либо фиксировано заранее, либо динамически определяется во время выполнения. Одним из распространенных способов динамического распределения работ при создании программ для ВС с общей памятью является портфель задач. Портфель задач, как правило, реализуется с помощью разделяемой переменной, доступ к которой в один момент времени имеет только один процесс. Если же память ВС распределенная, то такая схема распределения работ превращается в схему «управляющий – рабочий», поскольку портфель задач оформляется отдельным процессом. Основными примерами в этой области являются научные вычисления с итеративными алгоритмами и системы, требующие децентрализованного принятия решений.

  1. Базовые языки параллельного программирования. Параллельные операторы, процессы и процедуры.

На чём пишутся параллельные программы.

Уровни

● Программирование GPGPU — CUDA, OpenCL, OpenACC, MS C++ AMP

● API операционных систем — Windows API, POSIX

● RTL -библиотеки языков программирования — С++11, Java, C#

● Дополнительные библиотеки — Intel TBB, MS CCR, Boost, POCO C++ libraries, Qt4

Threads

● Распределённое программирование — MPI, PVM

● RTL -библиотеки с поддержкой компилятора — OpenMP, Cilk Plus

● Фреймворки — Apache Hadoop, BOINC

Инструменты

● MS Visual Studio 2010 Prof, Ulti, 2012 — All (OpenMP)

● Intel Parallel Studio -Intel Parallel Composer, Intel C++ Compiler (OpenMP, Intel Cluster

OpenMP, Cilk Plus)

● GCC — 4.2 (OpenMP)