МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Средства параллельного программирования





 

Языковые средства

Языковые средства параллельного программирования - это средства, позволяющие записать готовую схему параллелизма на том или ином языке программирования. Данные инструментальные программные средства разрабатываются как за рубежом, так и в России. Рассмотрим несколько примеров.

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

Язык ОССАМ предназначен прежде всего для многопроцессорных систем, построенных на базе транспьютеров. К сожалению, широкого распространения данный язык не получил и на другие аппаратные платформы не переносился.

Одной из отечественных разработок является система программирования GNS, предназначенная для многопроцессорных вычислительных систем с распределенной памятью. Принципы построения системы GNS реализованы в виде расширений языков программирования Fortran (Fortran GNS) и C (C GNS).

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

Язык Fortran GNS является расширением языка Fortran‑77 и базируется на концепции абстрактной GENESIS-машины. В соответствии с этой концепцией, задача пользователя представляет собой множество подзадач, которые динамически создаются на указанных процессорах распределенной системы и взаимодействуют между собою путем передачи и приема сообщений в любом из трех режимов - синхронном, асинхронном и в режиме без ожидания. При этом взаимодействовать может любая пара подзадач.

Средства языка Fortran GNS были приняты за основу расширений языка C при разработке языка C GNS.

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

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

Дальнейшим развитием Fortran-90 явился язык HPF (High Performance Fortran). В язык HPF включены богатые средства для распределения данных по процессорам. Необходимые коммуникации и синхронизации реализуются компилятором. Часть расширений реализована в виде функций и операторов языка, а часть - в виде директив компилятору, которые являются комментариями языка Fortran. Практически все производители супер-ЭВМ включают в свою поставку компиляторы HPF.



Среди отечественных инструментальных средств автоматического распараллеливания программ следует отметить систему программирования DVM.

DVM-система предназначена для создания переносимых и эффективных вычислительных приложений на языках C-DVM, Fortran-DVM и Java-DVM для компьютеров с различной архитектурой.

Языки программирования (Fortran DVM, C-DVM) обеспечивают:

· глобальное пространство имен (единое адресное пространство);

· программирование в терминах поведения системы в целом;

· программирование без низкоуровневой детализации взаимодействия и синхронизации задач;

· использование одного варианта программы для последовательного и для параллельного выполнения.

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

В рамках модели «общая память» разработан стандарт Open MP, позволяющий на базе этой модели создавать переносимое, масштабируемое программное обеспечение. Модель общей памяти Open MP основана на операторах разветвления (fork) и объединения (join) процессов. Выполнение программы начинается одним головным процессом. Оператор разветвления порождает группу параллельных процессов. После объединения из всех параллельных процессов остается только один головной процесс. Параллельные процессы могут, в свою очередь, выполнять операции разветвления, что приводит к вложенности групп параллельных процессов.

Open MP – гибкий стандарт, легко развиваемый применительно к любому языку последовательного программирования. Компонентами Open MP являются управляющие структуры, окружения данных, синхропримитивы и библиотеки времени исполнения. Так же, как и в языках HPF и DVM, OpenMP-инструкции вставляются как комментарии к языку программирования.

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

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

Язык Норма дает прикладному математику возможность сформулировать свою задачу в привычных для него терминах. Организацию процесса вычислений с учетом архитектуры ЭВМ выполняет транслятор с языка Норма.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.