БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ templet ДЛЯ...

13
Международная научно-техническая конференция «Перспективные информационные технологии». Самара, СГАУ (30 июня - 2 июля 2014) БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ ПРЕДСТАВЛЕНИЯ МОДЕЛИ «ПРОЦЕСС-СООБЩЕНИЕ» Востокин С.В. Самарский государственный аэрокосмический университет имени академика С.П. Королёва (национальный исследовательский университет)

Upload: others

Post on 25-Jul-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

Международная научно-техническая конференция «Перспективные информационные технологии». Самара, СГАУ (30 июня - 2 июля 2014)

БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ ПРЕДСТАВЛЕНИЯ МОДЕЛИ

«ПРОЦЕСС-СООБЩЕНИЕ»

Востокин С.В.

Самарский государственный аэрокосмический университет имени академика С.П. Королёва (национальный исследовательский университет)

Page 2: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 2

Назначение моделей программирования в параллельных вычислениях

● Сокрытие деталей реализации вычислительного процесса– Механизм синхронизации– Обмен данными между процессами

– Размещение кода процессов на физических процессорах

Page 3: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 3

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

● Модель процесс-сообщение– Код программы разбит на процессы– Каждый процесс выполняет фиксированный

набор процедур– Процедуры одного процесса выполняются

последовательно

– Процессы взаимодействуют путём отправки и приёма сообщений

– Процессы пассивны: активируются при поступлении сообщения

Page 4: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 4

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

● Создать новый язык или расширить существующий

● Использовать моделирующие свойства языка программирования общего назначения!– Как контролировать синтаксические ограничения

модели программирования?

– Как работать с увеличенным объёмом кода?

Page 5: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 5

Структура кода

/*$TET$templet$!templet!*/ ← граничный блок1

/* *Parent=+hello(). */ ← блок схемы модуля

/*$TET$*/ ← граничный блок2

bool Parent::hello() { ← системный блок

/*$TET$Parent$hello*/ ← граничный блок3

cout<<"Hello world!"; ← блок пользователя

return true;

/*$TET$*/ ← граничный блок4

} ← системный блок

Page 6: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 6

Тестовая задача

● Проверка тождества Sin2 (x) + Cos2 (x) = 1– Управляющий процесс (Parent) рассылает

рабочим значения переменной x– Два рабочих процесса (Child) вычисляют квадрат

своих тригонометрических функций от переменной x

– Управляющий процесс (Parent) собирает результаты, складывает их и сравнивает с 1

Page 7: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 7

Пример схемы — канал Link

~Link =

+BEGIN ?

argCos -> CALCCOS |

argSin -> CALCSIN;

CALCCOS !

cos2 -> END;

CALCSIN !

sin2 -> END.

Page 8: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 8

EBNF каналов

channel = '~' ident [ '=' state { ';' state} ] '.' .

state = [ '+' ] ident [ ( '?' | '!' ) [ rules ] ] .

rules = ident '->' ident { '|' ident '->' ident } .

Page 9: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 9

Пример схемы — процесс Parent

*Parent =

p1 : Link ! sin2 -> join;

p2 : Link ! cos2 -> join;

+fork( p1!argSin, p2!argCos );

join( p1?sin2, p2?cos2 ).

Page 10: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 10

Пример схемы — процесс Child

*Child =

p : Link ? argSin -> sin | argCos -> cos;

sin( p?argSin, p!sin2 );

cos( p?argCos, p!cos2 ).

Page 11: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 11

EBNF процессов

process = '*' ident [ '=' (( ports [ ';' actions ] ) | actions) ] '.' .

ports = port { ';' port } .

port = ident ':' ident( '?' | '!' ) [( rules [ '|' '->' ident ] ) | ( '- >' ident ) ] .

actions = action { ';' action } .

action = [ '+' ] ident '(' [args] ')' ['->' ( [ident] '|' ident) | ident ] .

args = ident ('?'|'!') ident { ',' ident ('?' | '!') ident} .

Page 12: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 12

Применение

● Быстрая разработка параллельных программ для суперкомпьютера "Сергей Королёв" в сервисе Templet Web– http://templet.ssau.ru/templet/templates

● Визуальное проектирование алгоритмов– http://extensions.openoffice.org/project/templet-ope

noffice-addon● Визуальная отладка программ

– https://bitbucket.org/RegiS_V2/diplom/

Page 13: БАЗОВЫЙ СИНТАКСИС ЯЗЫКА РАЗМЕТКИ TEMPLET ДЛЯ …templet.ssau.ru/wiki/_media/pit2014/pit2014vostokin.pdf · БАЗОВЫЙ СИНТАКСИС ЯЗЫКА

ПИТ-2014 13

Спасибо за внимание!

● Домашняя страница проекта http://templet.ssau.ru/

● Служба научных вычислений на СК Сергей Королёв http://templet.ssau.ru/templet/