Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Дисциплины:
2021-01-31 | 106 |
5.00
из
|
Заказать работу |
|
|
Рассмотрим один из известных ЯП – функциональный язык параллель- ного программирования SISAL.
Название языка расшифровывается как «Streams and Iterations in a Single Assignment Language», сам он представляет собой дальнейшее развития языка VAL, известного в середине 1970-х годов. Среди целей разработки языка SISAL следует отметить наиболее характерные, связанные с функцио- нальным стилем программирования:
– создание универсального функционального языка;
– разработка техники оптимизации для высокоэффективных параллель- ных программ;
– достижение эффективности исполнения, сравнимой с императивными языками типа Fortran и C;
– внедрение функционального стиля программирования для больших научных программ.
|
|
алгоритмов и разработке программ в терминах крупноблочных и регулярно организованных построений, опираясь на естественный параллелизм уровня постановки задачи.
Параллельное программирование на языке Sisal опирается на парадигму функционального программирования. Но замысел языка нацелен на создание конкуренции вечно живому языку Fortran и, кроме того, в качестве базового языка был использован язык VAL, в свою очередь многое унаследовавший от языка Pascal. От языка Fortran унаследован ряд идей по обработке и пред- ставлению векторов.
|
Основное продвижение по технике программирования – развитие струк- туры циклов для их реализации на параллельных архитектурах. Введено по- нятие «пространство итераций» и предложена специальная конструкция для фильтрации мультизначений, получаемых при совмещенном исполнении итераций и участков повторяемости.
Основные виды команд:
– обработка потоков (очередь =стек= список);
– контроль однократности присваиваний (SSA-формы);
|
– дополнение цикла участком «returns» для оформления значения распа- раллеленного цикла;
– формирование пространство итераций;
– канальный обмен между итерациями;
– операции по упаковке, свертке или фильтрации серийных значений.
|
Фрагмент | Пояснение |
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 | % выбор и вычисление результата цикла |
Пример 61. Вычисление числа π (пи)
Фрагмент | Пояснение |
for i in [1..Cycles/2] do val:= 1.0/real(4*i-3) – 1.0/real(4*i-1); returns sum(val) end for * 4.0 | % пространство параллельно исполнимых итераций % тело цикла, для каждого i исполняется независимо % выбор и свертка результатов всех итераций цикла % вычисление результата выражения |
|
Фрагмент | Пояснение |
for i in [1..2] dot j in [3..4] do returns product (i+j) end for | % для пар индексов [1,3] и [2,4] % произведение сумм % = 24 |
Пример 63. В for-выражениях операции dot и cross могут порождать пары индексов при формировании пространства итерирования
Фрагмент | Пояснение |
for i in [1..2] cross j in [3..4] do returns product (i+j) end for | % для пар [1,3], [1,4], [2,3] и [2,4] % произведение сумм % = 600 |
Пример 64. В for-выражениях операции dot и cross могут порождать пары индексов при формировании пространства итерирования
Фрагмент | Пояснение |
for I:= 1 while I < S do K:= I; I:= old I + 2; J:= K + I; returns product(I+J) end for | % значение из предыдущей итерации |
|
Как это свойственно языкам функционального программирования, SISAL язык математически правильный – функции отображают аргументы в резуль- таты без побочных эффектов, и программа строится как выражение, выраба- тывающее значение. Наиболее интересна форма параллельного цикла. Она выделяет три части: for – генератор пространства итераций, do – тело цикла и returns – формирователь возвращаемых значений.
SISAL -программа представляет собой набор функций, допускающих частичное применение, т. е. вычисление при неполном наборе аргументов. В таком случае по исходному определению функции строятся его проекции, зависящие от остальных аргументов, что позволяет оперативно использовать эффекты смешанных вычислений и определять специальные оптимизации программ, связанные с разнообразием используемых конструкций и реализационных вариантов параллельных вычислений.
|
Фрагмент | Пояснение |
function Sum (N); result (+ (sqw (1.. N))); | % Сумма квадратов |
Пример 66. Сумма квадратов
|
Ряд ЯВУ, такие как Fortran, Lisp, Algol, Apl, Pascal, используются как ба- зовые при создании новых ЯВУ и ЯСВУ, что позволяет формулировать от- носительные парадигматические характеристики в лаконичной и легко вос- принимаемой форме.
Абстрактный комплекс
Операционная семантика языка программирования обычно базируется на определении абстрактной машины, которая в случае многопроцессорных кон- фигураций естественно становится конструкцией из абстрактных процессоров
– абстрактным комплексом (АК). В основном определение команд абстракт- ной машины наследует решения SECD-машины, предложенные Лэндиным и описанные в книге Хэндерсона. Для языка параллельного программирования такой комплекс можно определить следующим образом:
|
Регистры = < стек результатов, структура общего контекста,
синхросеть потоков/процессоров (активных и пассивных), очередь барьеров>
СК – система команд, включающая в себя универсальные для всех про- цессоров команды, типичные для языков управления заданиями.
Появляется пересмотр ряда понятий, а именно переход от АМ к абстракт- ному комплексу (АК):
АК = <P, R, B, D>, где
P – вектор процессоров;
R – список внешних результатов вычислений;
B – таблица синхронизованных потоков, ждущих достижения барьера другими потоками;
D – набор пассивных потоков.
Элементы P – вектора процессоров содержат номер активного потока, те- кущий результат его выполнения и собственно список его предстоящих дей- ствий (фрагментов):
|
P = <i, s, c>, где
i – уникальный номер потока, выполняемого на процессоре P; s – стек текущих результатов i-го потока;
c – список действий i-го потока.
|
Общая система команд АК поддерживает выполнение следующих дей- ствий:
LOAD – загрузка произвольного пассивного потока; F-LOAD – загрузка заданного пассивного потока;
BAR – статическая синхронизация потоков по барьерам; IF – фильтр по заданному предикату;
WHEN – ожидание истинности предиката; FORK – развилка;
JOIN – слияние ветвей;
|
WAIT – ожидание сообщения; MASSAGE – получение сообщения;
KILL – принудительное отключение потока с диагностическим сообще- нием;
STOP – плановое завершение работы потока с формированием внешнего результата.
Нормальное завершение многопоточной программы происходит при ис- черпании регистров B и D и плановом завершении всех активных потоков.
|
Для простоты учебной модели здесь не рассматривается учет разнообразия категорий систем команд отдельных процессоров и видов используемой памяти с различной дисциплиной функционирования. Ради удобочитаемости общие ко- манды АК представлены в виде системы переходов:
[i s c,...] R B D → [i' s' c', …] R' B' D'
Естественно, на уровне абстрактной машины поддержаны обычные бинарные операции над данными и дополнительные операции локального управления процессами, возникающие при реализации системы программирования. Определение синхронизации циклов и рекурсий может быть представлено в терминах индексируемых барьеров. Динамическая синхронизация в стиле ООП несложно выражается с помощью дополнительного регистра для реализации канала обмена сообщениями.
Наполнение многопоточной программы может развиваться независимо от схем управления вычислениями в отдельных потоках, а схемы можно ре- организовывать без дополнительной отладки наполнения. Они играют роль макетов или моделей программ и работают подобно макросам (открытая
|
Выделение схемного уровня упрощает включение в схему разработки программ механизмов верификации (подобие модели или соответствие ак- сиомам), а на их основе возможна проверка программ на правдоподобие, ло- гический вывод свойств, выполнение индуктивных и дедуктивных построе- ний. Кроме того, техника отладки программ обогащается возможностью привлечения протоколов ранее выполненных вычислений и приведения про- грамм к нормальным формам, удобным для сведения к базовым/стандарт- ным моделям параллельных вычислений.
|
Многоуровневая память
На уровне первичного элементарного программирования мало заметна принципиальная разница между хранением данных в оперативной и внешней памяти. Особенности работы с внешней памятью много детальнее изучены в практике организации реляционных баз данных (БД) и применения языка за- просов к базам данных SQL.
|
В использовании конкретных таблиц может быть заинтересовано множество пользователей для разных сфер применения. Хранение таблиц может быть организовано на базе различных устройств и файловых систем и доступ к ним может реализовываться с помощью различных дисциплин коммуникации. Для обеспечения эффективности использования аппаратуры и необходимого для практичности пользовательского интерфейса разработаны определенные системные решения, что суммарно приводит к трем уровням проектирования архитектуры БД.
Уровни архитектуры:
– внутренний (организация хранения);
– внешний (логика использования);
– промежуточный (концепции системы).
|
Полноценное решение проблем параллельного программирования тре- бует создания более специализированного инструментария, некоторые меха- низмы реализации которого могут быть изучены в форме экспериментальной разработки учебного языка параллельного программирования, некоторые идеи которого будут описаны в следующей лекции.
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!