ПОЗНАВАТЕЛЬНОЕ Сила воли ведет к действию, а позитивные действия формируют позитивное отношение Как определить диапазон голоса - ваш вокал
Игровые автоматы с быстрым выводом Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими Целительная привычка Как самому избавиться от обидчивости Противоречивые взгляды на качества, присущие мужчинам Тренинг уверенности в себе Вкуснейший "Салат из свеклы с чесноком" Натюрморт и его изобразительные возможности Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д. Как научиться брать на себя ответственность Зачем нужны границы в отношениях с детьми? Световозвращающие элементы на детской одежде Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия Как слышать голос Бога Классификация ожирения по ИМТ (ВОЗ) Глава 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-инструкции вставляются как комментарии к языку программирования. Рассматривая средства автоматического распараллеливания, необходимо упомянуть о непроцедурных языках программирования, компиляторы с которых формируют параллельный код. Примером подобного средства может служить непроцедурный язык Норма. Непроцедурный язык Норма предназначен для записи численных методов решения задач математической физики разностными методами. Главная идея, положенная в основу языка Норма, заключается в том, что полученное прикладным специалистом описание решения задачи (расчетные формулы), почти непосредственно используется для ввода его в вычислительную систему и проведения расчетов. Язык Норма дает прикладному математику возможность сформулировать свою задачу в привычных для него терминах. Организацию процесса вычислений с учетом архитектуры ЭВМ выполняет транслятор с языка Норма. |