Файл: Синхронизация. Два вида синхронизации. Синхронизация.docx
Добавлен: 26.10.2023
Просмотров: 23
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
В частности, ему нужно как-то определить, какой процессор содержит необходимые ему данные, и послать этому процессору сообщение с запросом копии данных. Затем процессор 0 блокируется до получения ответа. Когда процессор 1 получает сообщение, программное обеспечение должно проанализировать его и отправить назад необходимые данные. Когда процессор 0 получает ответное сообщение, программное обеспечение разблокируется и продолжает работу.
В мультикомпьютере для взаимодействия между процессорами часто используются примитивы send и receive. Поэтому программное обеспечение мультикомпьютера имеет более сложную структуру, чем программное обеспечение мультипроцессора. При этом основной проблемой становится правильное разделение данных и разумное их размещение. В мультипроцессоре размещение частей не влияет на правильность выполнения задачи, хотя может повлиять на производительность. Таким образом, мультикомпьютер программировать гораздо сложнее, чем мультипроцессор.
-
Сетевая система. Сеть рабочих станций.
В компьютерных сетях могут использоваться как однопользовательские мини- и микрокомпьютеры (в том числе и персональные), оснащенные терминальными устройствами для связи с пользователем или выполняющие функции коммутации и маршрутизации сообщений, так и мощные многопользовательские компьютеры (мини-компьютеры, большие компьютеры). Последние выполняют эффективную обработку данных и дистанционно обеспечивают пользователей сети всевозможными информационно-вычислительными ресурсами. В локальных сетях эти функции реализуют серверы и рабочие станции.
Рабочие станции
Рабочая станция (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).
-
Три класса приложений. Примеры.
Многопоточные системы
Оконные системы, GUI
-Многопроцессорные операционные системы и системы разделения времени.
-Системы реального времени, управляющие техническими объектами.
Причина — организовать код в виде набора потоков проще, чем в виде большой последовательной программы.
Распределённые вычислени
-Сетевые файловые серверы
-Распределённые системы баз данных
-Web-серверы
-Системы, объединяющие компоненты производства
Отказоустойчивые системы
Причины — интеграция систем, удалённый доступ к данным, повышение надёжности системы.
Синхронные параллельные вычисления
Синхронные параллельные вычисления.
Научные вычисления — математическое моделирование физических процессов в машиностроении, физике, науках о Земле, астрономии, медицине
CAD/CAE: FEA, CFD, MBD, optimization
Графика, обработка и синтез изображений
Сложные комбинаторные или оптимизационные задачи, экономическое моделирование.
Причина — ускорение вычислений, решение задач большей размерности.
-
Пять парадигм параллельных программных приложений.
Существует ряд схем взаимодействия самостоятельных частей параллельного приложения. Кратко опишем основные.
Итеративный параллелизм используется для реализации параллелизма в итеративной программе (чаще всего в циклах). Такой параллелизм характерен для распараллеливания по данным в согласованных параллельных вычислениях.
Рекурсивный параллелизм используется в программах с одной или несколькими рекурсивными процедурами, вызов которых независим. Каждый рекурсивный вызов порождает один или несколько новых процессов, которые независимо работают над решением задачи. В рамках такой парадигмы часто реализуются технологии «разделяй и властвуй» или «перебор с возвращением».
Итеративный и рекурсивный параллелизм основан на приемах, известных в последовательном программировании. Следующие схемы взаимодействия характерны именно для параллельных программ.
«Производители и потребители» – модель взаимодействия неравноправных процессов по поводу общих данных. Одни процессы «производят» данные, другие – их «потребляют». Часто такие процессы организуются в конвейер, через который проходит информация. Каждый процесс конвейера потребляет выход своего предшественника и производит входные данные для своего последователя. Другой распространенный способ организации потоков – древовидная структура, на ней основан, в частности,
принцип дихотомии.
«Клиенты и серверы» – наиболее распространенная модель взаимодействия процессов в распределенных системах. Клиентский процесс запрашивает (возможно, неоднократно) данные у сервера и ожидает ответа, затем использует полученные данные по своему усмотрению. Серверный процесс ожидает запроса от клиента, далее в соответствии с поступившим запросом обрабатывает данные и возвращает запросившему их процессуклиенту. Таким образом, в отличие от предыдущего случая, между клиентом
И сервером необходимо установить двустороннюю связь. Сервер может быть реализован как одиночный процесс, обслуживающий одновременно несколько клиентских процессов. Сервер может быть многопоточной программой, каждый поток которой обслуживает своего клиента. Если клиент
и сервер выполняются на одном компьютере, то они представляют собой параллельное программное обобщение процедур: сервер исполняет роль процедуры, а клиент ее вызывает. Однако если коды клиента и сервера разнесены в пространстве, то для синхронизации используются специальные технологии, такие как удаленный вызов процедур или рандеву.
«Управляющий и рабочие» – модель организации вычислений, при которой существует поток, координирующий работу всех остальных пото-
ков. Как правило, управляющий поток распределяет данные, собирает и анализирует результаты. Эта парадигма часто применяется в задачах оптимизации и статистической обработки информации, при обработке изображений и других научных вычислениях с итеративными алгоритмами.
«Взаимодействующие равные» – модель, в которой исключен не занимающийся непосредственными вычислениями управляющий поток. Распределение работ в таком приложении либо фиксировано заранее, либо динамически определяется во время выполнения. Одним из распространенных способов динамического распределения работ при создании программ для ВС с общей памятью является портфель задач. Портфель задач, как правило, реализуется с помощью разделяемой переменной, доступ к которой в один момент времени имеет только один процесс. Если же память ВС распределенная, то такая схема распределения работ превращается в схему «управляющий – рабочий», поскольку портфель задач оформляется отдельным процессом. Основными примерами в этой области являются научные вычисления с итеративными алгоритмами и системы, требующие децентрализованного принятия решений.
-
Базовые языки параллельного программирования. Параллельные операторы, процессы и процедуры.
На чём пишутся параллельные программы.
Уровни
● Программирование 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)