Главная » Просмотр файлов » Что-то вроде лекций в ворде

Что-то вроде лекций в ворде (1127771), страница 15

Файл №1127771 Что-то вроде лекций в ворде (Что-то вроде лекций в ворде) 15 страницаЧто-то вроде лекций в ворде (1127771) страница 152019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 15)

Параллельные секции

SECTIONS ... END SECTIONS
Не-итеративная параллельная конструкция. Определяет набор независимых секций кода (т.н., "конечный" параллелизм). Секции отделяются друг от друга директивой SECTION.

Примечание. Если внутри PARALLEL содержится только одна конструкция DO или только одна конструкия SECTIONS, то можно использовать укороченную запись: PARALLEL DO или PARALLEL SECTIONS.

Исполнение одной нитью

SINGLE ... END SINGLE
Определяет блок кода, который будет исполнен только одной нитью (первой, которая дойдет до этого блока).

Явное управление распределением работы

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

Директивы синхронизации

  • MASTER ... END MASTER
    Определяет блок кода, который будет выполнен только master-ом (нулевой нитью).

  • CRITICAL ... END CRITICAL
    Определяет критическую секцию, то есть блок кода, который не должен выполняться одновременно двумя или более нитями

  • BARRIER
    Определяет точку барьерной синхронизации, в которой каждая нить дожидается всех остальных.

  • ATOMIC
    Определяет переменную в левой части оператора "атомарного" присваивания, которая должна корректно обновляться несколькими нитями.

  • ORDERED ... END ORDERED
    Определяет блок внутри тела цикла, который должен выполняться в том порядке, в котором итерации идут в последовательном цикле. Может использоваться для упорядочения вывода от параллельных нитей.

  • FLUSH
    Явно определяет точку, в которой реализация должна обеспечить одинаковый вид памяти для всех нитей. Неявно FLUSH присутствует в следующих директивах: BARRIER, CRITICAL, END CRITICAL, END DO, END PARALLEL, END SECTIONS, END SINGLE, ORDERED, END ORDERED.

В целях синхронизации можно также пользоваться механизмом замков (locks).

В OpenMP переменные в параллельных областях программы разделяются на два основных класса:

  • SHARED (общие; под именем A все нити видят одну переменную) и

  • PRIVATE (приватные; под именем A каждая нить видит свою переменную).

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

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

В OpenMP предусмотрен также набор библиотечных процедур, которые позволяют:

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

  • использовать синхронизацию на базе замков (locks).

  1. Язык Фортран-DVM.

DVM-модель выполнения параллельной программы охватывает параллелизм по данным и параллелизм задачи (см. также проект [ИСП РАН/Java-DVM]). В рамках DVM-модели программист (в рамках пространства глобальных имен - единое адресное пространство) определяет:

  • распределение элементов массивов по процессорам;

  • распределение витков циклов по процессорам;

  • организацию эффективного доступа к данным, расположенным на иных процессорах;

  • организацию эффективного выполнения редукционных операций (например, sum, min, max - элементов распределенного массива).

Язык Фортран-DVM: Фортран-77, со вставкой специальных комментариев.

  • Компиляция для однопроцессорных (последовательных) платформ: спецкомментарии прозрачны для стандартных компиляторов;

  • Компиляция для многопроцессорных платформ: собственный Фортран-DVM компилятор расширяет спецкомментарии в конструкции с обращениями к библиотеке run-time support.

Язык Си-DVM: стандартный Си, с библиотекой специальных макросов (с "пустым" определением макросов), реализующих DVM-модель.

  • Компиляция для однопроцессорных (последовательных) платформ: спецмакросы прозрачны для стандартных компиляторов, так как они имеют пустое определение;

  • Компиляция для многопроцессорных платформ: собственный Си-DVM компилятор расширяет спецмакросы в конструкции с обращениями к библиотеке run-time support.

Имеются средства трассировки (последовательного и параллельного исполнения одной и той же программы), сравнения трасс, измерения параметров эффективности (распараллеливания) исполнения программ.

Компиляция программ на языках Фортран/Си-DVM поддержана на платформы:

  • обычные (последовательные) ЭВМ со стандартным языком Фортран-77/Си (последовательная отладка и т.п.);

  • параллельные ЭВМ с MPI + Фортран/Си (в том числе: МВС-100);

  • параллельные ЭВМ с PVM + Фортран/Си (в том числе: HP Convex SPP-1000);

  • параллельные ЭВМ с GNS или ОС Router + Фортран/Си (в том числе: МВС-100).

Язык Fortran DVM (FDVM) представляет собой язык Фортран 77 [5], расширенный спецификациями параллелизма. Эти спецификации оформлены в виде специальных комментариев, которые называются директивами. Директивы FDVM можно условно разделить на три подмножества:

  • Распределение данных

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

  • Спецификация удаленных данных

Модель параллелизма FDVM базируется на специальной форме параллелизма по данным: одна программа – множество потоков данных (ОПМД). В этой модели одна и та же программа выполняется на каждом процессоре, но каждый процессор выполняет свое подмножество операторов в соответствии с распределением данных.

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

На следующем этапе определяются массивы, которые должны быть распределены между процессорами (распределенные данные). Эти массивы специфицируются директивами отображения данных (раздел 4). Остальные переменные (распределяемые по умолчанию) отображаются по одному экземпляру на каждый процессор (размноженные данные). Размноженная переменная должна иметь одно и то же значение на каждом процессоре за исключением переменных в параллельных конструкциях

Модель FDVM определяет два уровня параллелизма:

  • параллелизм по данным на секции массива процессоров;

  • параллелизм задач – независимые вычисления на секциях массива процессоров.

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

Параллелизм задач реализуется распределением данных и независимых вычислений на секции массива процессоров .

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

  1. Язык Sisal.

!! вроде как - язык описания поточных алгоритмов

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

Заметное место среди языков функционального программирования занимают языки организации распределенных и параллельных вычислений. Практики с большой похвалой отзываются о языке функционального программирования Erlang фирмы Ericsson. Здесь мы рассмотрим один из довольно известных — язык функционального программирования SISAL [11].

  • создание универсального функционального языка;

  • разработка техники оптимизации для высокоэффективных параллельных программ;

  • достижение эффективности исполнения, сравнимой с императивными языками типа Fortran и C;

  • внедрение функционального стиля программирования для больших научных программ.

Название языка расшифровывается как "Streams and Iterations in a Single Assignment Language", сам он представляет собой дальнейшее развития языка VAL, известного в середине 70-х годов. Среди целей разработки языка SISAL следует отметить наиболее характерные, связанные с функциональным стилем программирования:

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

Начнем с примера программы:

1. Вычисление числа π (пи).

For % инициирование цикла

Approx := 1.0;

Sign := 1.0;

Denom := 1.0;

i := 1

while i <= Cycles do % предусловие завершения цикла

Sign := -Sign; % однократные

Denom := Denom + 2.0; % присваивания

Approx := Approx + Sign / Denom; % образуют

i := i + 1 % тело цикла

returns Approx * 4.0

% выбор и вычисление результата цикла

end for

2. Это выражение также вычисляет число π (пи).

for i in [1..Cycles/2] do

% пространство параллельно

% исполнимых итераций

val := 1.0/real(4*i-3) — 1.0/real(4*i-1);

% тело цикла, для каждого i

% исполняемое независимо

returns sum( val ) % выбор и свертка результатов

% всех итераций цикла

end for * 4.0 % вычисление результата

% выражения

Это выражение вычисляет сумму всех вычисленных значений val и умножает результат на 4.0.

3, 4. В for-выражениях операции dot и cross могут порождать пары индексов при формировании пространства итерирования:

for i in [1..2] dot j in [3..4] do

% для пар индексов [1,3] и

% [2,4]

returns product (i+j)

% произведение сумм

end for % = 24

for i in [1..2] cross j in [3..4] do

% для пар [1,3], [1,4], [2,3]

% и [2,4]

returns product (i+j)

% произведение сумм

end for % = 600

5. Итеративное for-выражение с обменом данными между итерациями:

for

I := 1

while I < S do

K := I;

I := old I + 2;

% значение из предыдущей итерации

J := K + I;

returns product(I+J)

end for

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

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

function Sum (N); % Сумма квадратов

result (+ ( sqw (1 .. N)));

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

  1. Система программирования Норма.

Декларативный язык Норма предназначен для описания решения вычислительных задач сеточными методами. Возможно применение для иных задач (нет более подробных данных).

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

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

  • Фортран 77-для выполнения на последовательных ЭВМ;

  • Фортран/PVM-для выполнения на любых системах с Фортран/PVM;

  • Фортран/GNS-для выполнения на МВС-100 и других системах с Фортран/GNS-см. проект ИПМ/GNS;

  • Фортран/Convex-для выполнения на HP Convex SPP-100 и других системах с Фортран/Convex;

  • (в разработке) Фортран/MPI-для выполнения на любых системах с Фортран/MPI;



http://parallel.ru/tech/norma/

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

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

  • Выбирается пространственно-временная сетка и производится дискретизация уравнений с помощью одного из разностных методов.

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

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

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

Характеристики

Тип файла
Документ
Размер
991 Kb
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6430
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее