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

Материал из 0x1.tv

;{{SpeakerInfo}}: {{Speaker|Валерий Баканов}}
<blockquote>
В современных технологиях обработки информации одной из важнейших является параллелизация, обеспечивающая повышение
производительности и надёжности обработки данных.  

В Екатерина Лапшина}}
<blockquote>
Рассмотрены варианты разработки программного кода с использованием свободного программного обеспечения, которое позволяет создать программный продукт с минимальным набором  же время преподавание соответствующих дисциплин зачастую
поставлено излишне формально и не полностью соответствует сегодняшним технологическим реалиям в данной области знаний и
навыков. 

В  через визуальные интерфейсы и конструкторы с помощью Low-code платформы.разработкой новых (отечественных) микропроцессоров важно получение студентами компетенций в области
реализации параллельных вычислений, максимально использующих архитектурные особенности разрабатываемых аппаратных
средств. 
</blockquote>

{{VideoSection}}

{{vimeoembed|917659503|800|450}}
{{youtubelink|}}

{{SlidesSection}}
[[File:Параллелизм в алгоритмах  выявление и рациональное использованиеТенденции разработки программного обеспечения с использованием Low-code платформ (Валерий БакановЕкатерина Лапшина, OSEDUCONF-2022).pdf|left|page=-|300px]]

{{----}}

== Thesis ==

Автор уверен в верховенстве сущности «алгоритм» при глубинном рассмотрении проблемы параллелизма, которая должна
предшествовать механическому программированию с опором на библиотечные программы. При такой постановке задачи
возрастает ценность изучения внутренних свойств именно алгоритмов  как [http://algowiki-project.org реальных блоков построения программ].
Важнейшим  этапом является анализ тонкой информационной структуры конкретных алгоритмов (программ)<ref name="d2">Воеводин&nbsp;В.&nbsp;В., Воеводин&nbsp;Вл.&nbsp;В. Параллельные вычисления.  СПб.: БХВ-Петербург, 2004.  608</ref>. 

В данной работе исследуемый алгоритм представляется в форме операторов  императивного ассемблероподобного  языка, причём
никакой априорной информации о потенциале скрытого параллелизма  не имеется. Конечной целью является создание плана
(расписания) параллельного выполнения заданного алгоритма на определённом (Low-code платформы разработки  это приложение, которое предоставляет графический пользовательский интерфейс для
программирования и, таким образом, разрабатывает код с большей скоростью и сокращает затраченные усилия с минимальным
количеством кодирования. 

Подобные платформы реализованы в том числе, как свободное программное обеспечение (СПО)<ref name="d1">[https://www.hmong.press/wiki/Low-code_development_platform Платформа разработки low-code  определение]</ref>.

Такие среды разработки применяются для создания прикладного программного обеспечения через графический интерфейс
пользователя вместо стандартного программирования вручную. С помощью платформ Low-code возможно, гетерогенном) поле параллельных
вычислителей (далее ПВ). Такая концепциясоответствует подходу ILP (<i>Instruction</i>-Level Parallelizm,
параллелизм уровня машинных инструкций). 

[[File:Pereslavl-2022-bakanov-bakanov-Bakanov-img001.png|center|640px|thumb|Общая схема инструментального программного комплекса для построения  планов выполнения параллельных программ (*.set и др.  типы файлов, с которыми работает программный комплекс)]]

На вход программной системы  (см. рис.) поступает описание анализируемого алгоритма  в указанной форме формального
его описания  в виде ориентированного ациклического Информационного Графа Алгоритма (далее  ИГА)    зависимость вида
“операторы <b>→ </b>операнды”, при этом вершины графа ассоциируются с операторами (группами операторов) программы, а
дуги    с линиями передачи данных. 

Выявление и анализ внутреннего логического параллелизма в алгоритмах реализовано с помощью имитации модели акторов
(модуль D-F)  и  построения специальных сечений ИГА в виде его Ярусно-Параллельной Формы  (далее  ЯПФ, модуль
SPF@home). Оба упомянутых модуля разработаны с использованием языка C/C++ в стиле GUI для модели Win’32,  являются
полностью OpenSource<ref> [https://github.com/Valery-Bakanov</ref> ] и могут быть выгружены для создание полностью
рабочего приложения, а в редких случаях    с использованием дополнительного кодирования. Данные среды разработки
также помогают сократить объём программирования, что позволяет ускорить создание приложений. Большим преимуществом
является то, что расширяется круг людей, которые могут внести свой вклад в разработку приложения. Low-code платформы
также могут снизить первоначальные затраты на настройку, обучение и обслуживание. 

Недавнее исследование бостонской компании Mendix показало, что спрос на разработчиков среди ИТ-специалистов достиг
апогея. Почти шесть из десяти (57%) говорят, что количество персонала, необходимого для разработки программного
обеспечения, увеличивается, а [https://www.reworked.co/information-management/whats-behind-the-explosion-of-low-code-and-no-code-applications/ стоимость разработки программного обеспечения растёт (61%)]. 

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

Рассмотрим варианты Low-code платформ
использования (формат инсталляционных файлов [http://vbakanov.ru/dataflow/content/install_df.exe], [http://vbakanov.ru/spf@home/content/install_spf.exe]): 

[[File:Pereslavl-2022-bakanov-bakanov-Bakanov-img002.png|center|640px|thumb|Пользовательский интерфейс в стиле GUI программ рассматриваемого  комплекса СПО]]

Модуль D-F (Data-Flow) является фактически универсальным вычислителем архитектуры SMP (<i>Symmetric
MultiProcessing</i>, системы с общей памятью),  на вход которого подаётся последовательная  программа (используются 3-х
символьные мнемоники команд и 3-х адресная система с порядком следования операндов согласно соглашениям AT\&T<ref name="d3">Баканов&nbsp;В.&nbsp;М. Управление динамикой вычислений  в процессорах потоковой архитектуры  для различных типов алгоритмов. // Журнал «Программная инженерия»,  М.: 2015, №~9, c. 20—24.</ref>).

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

Модуль SPF@home предназначен для моделирования и выбора наилучших  заданном смысле) сценариев преобразования ЯПФ<ref name="d4">Федотов&nbsp;И.&nbsp;целей.

* [https://nl-a.ru/nla-framework NL!A framework]  российский бесплатный low-code framework, позволяющий создавать полноценные бизнес-приложения Параллельное программирование. Модели и приёмы.  М.: СОЛОН-Пресс, 2018. —~390</ref>как планов параллельного выполнения программ на вычислительной системе определённой архитектуры<ref name="d5">V.&nbsp;M.&nbsp;Bakanov.  Software complex for modeling  optimization  program implementation on parallel calculation systems. Open Computer Science, 2018, 8, Issue 1, Pages 228—234, ISSN (Online) 2299-1093, DOI: [https://www.degruyter.com/document/doi/10.1515/comp-2018-0019/html]</ref>. 

Программный модуль SPF@home строит план выполнения параллельной программы без привязки к конкретной технологии параллельного
программирования, поэтому логичнее говорить о <i>каркасе</i> плана (расписания) выполнения:

[[File:Pereslavl-2022-bakanov-bakanov-Bakanov-img003.png|center|640px|thumb|ЯПФ алгоритма как <i>каркас</i> плана выполнения параллельной программы нахождения действительных корней полного квадратного уравнения в «верхнем»  варианте (номера ярусов приведены справа, пунктиром показаны допустимые положения операторов по ярусам&nbsp;ЯПФ]]

Задача построения <i>каркаса</i> плана  выполнения параллельной программы в общем случае является <i>NP</i>-полной
<ref name="d6">Гэри&nbsp;М., Джонсон&nbsp;Д.  Вычислительные машины и труднорешаемые задачи.  М.:  Мир, Книга по Требованию,  2012. —~420</ref>, поэтому в данном случае используется эвристический подход к решению. 

Собственно сценарий преобразования реализуется с использованием скриптового языка Lua<ref name="d7">Иерузалимски&nbsp;Роберту. Программирование на языке Lua.   М.: ДМК Пресс, 2014. —~382</ref>, при этом Lua-вызовы являются «обёртками» над функциями API системы SPF@home.

Конечной целью применения сценариев целенаправленного преобразования ЯПФ является фактически список EPIC
(<i>Explicitly Parallel Instruction Computing</i>, набор инструкций с явным параллелизмом) для выполнения на
конкретной параллельной вычислительной системе (особо подходящей архитектурой можно считать VLIW (<i>Very Long
Instruction Word</i>, сверхдлинное машинное слово).

Типовые студенческие задания исследовательского уровня, при решении которых используются программные модули <tt>D-F</tt> и
<tt>SPF@home</tt>:


*  Определить число ПВ, при которых время параллельного выполнения заданного алгоритма минимально. Насколько увеличится время при половинном (%  70%) ПВ?
*  Каким  минимальное число ПВ зависит , заложенные в кодогенератор NL!A framework, позволяют за считаные секунды создать полноценное рабочее бизнес-приложение;
* [https://www.outsystems.com/ OutSystem]  это надёжная и гибкая low-code платформа для разработки корпоративных мобильных и веб-приложений, которые разворачиваются в локальной или в гибридных средах;
* [https://soware.ru/products/mendix Mendix]  это бескодовая (no-code) программная платформа, предоставляющая инструменты для создания, тестирования,развёртывания и проверки программных приложений.


Помимо бесплатных версий популярных платформ, также существуют различные варианты Low-code СПО с открытым исходным
кодом, таких как Appsemble, Skyve, Baserow и другие. Наличие таких разнообразных платформ говорит о популярности данных
решений иразмерности обрабатываемых данных (при неизменном алгоритме их обработки)?
*  Сравнить два (несколько) заранее разработанных сценариев целенаправленного преобразования ЯПФ для одного (нескольких) алгоритмов для выполнения на заданном поле ПВ?
*  Разработать сценарий целенаправленного преобразования ЯПФ для выполнения заданного алгоритма (алгоритмов, классов алгоритмов) на заданном поле ПВ исходя из заданных требований (минимума вычислительной сложности процедуры преобразования, максимума равномерности загрузки ПВ, минимума времени выполнения алгоритма).

Следует заметить, что модуль SPF@home обладает большими возможностями, чем декларировано идеологемой ILP. развитии.

Есть ряд других причин, по которым предприятиям следует рассматривать Low-code платформы:
#  Более быстрый выход на рынок;
#  Повышение удовлетворённости клиентов;
#  Снижение затрат на ИТ-инфраструктуру;
#  Более эффективное управление приложениями;
#  Лучшее управление ИТ;


Безусловно, подобные среды разработки  это не панацея, а лишь вариант решения для создания программного продукта, поэтому
Low-code платформы имеют ряд минусов:
#  Сложность в выборе подходящего ресурса;
#  Ограничения в функционале;
#  Зависимость от платформы;


Рассматривая 
сущность «операторы» как группы операторов любого размера, этот модуль полезен и при составлении планов ПВ программ с
гранулами параллелизма большого размера  напр.,  в МИРЭА эта возможность используется при занятиях на кафедральном
вычислительном кластере с использованием технологии MPI (<i>Message Passing Interface</i>, программный интерфейс
передачи сообщений).

Разработанное СПО и методики (приёмы выявления скрытого параллелизма и его параметров в произвольных алгоритмах, способы
построения рациональных планов  выполнения параллельных программ на заданном поле вычислителей) ряд лет плюсы и минусы Low-code платформ, можно сделать вывод, что они отлично подходят для быстрого создания
небольших проектов и увеличения количества реализуемых решений. Они сокращают разрыв между пользователями и
разработчиками, что позволяет в короткий срок получить работающий прототип и сформировать видение будущей системы.
Также можно проследить стремительное развитие данного направления в целом и как СПО.

См  также: Лапшина Е.А., Симонов В.Л. Преимущества информационных систем с веб-интерфейсом // XIX Международная конференция
«Современные информационные технологии в образовании, науке и промышленности» 29—30 апреля 2021 года, г. Москва.при
обучении студентов в указанных университетах России и позволили повысить компетенции учащихся в  области параллелизации
обработки данных.

* http://vbakanov.ru/dataflow/
* http://vbakanov.ru/spf@home/ 

{{----}}
[[File:{{#setmainimage:Параллелизм в алгоритмах  выявление и рациональное использованиеТенденции разработки программного обеспечения с использованием Low-code платформ (Валерий БакановЕкатерина Лапшина, OSEDUCONF-2022)!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->

<references/>

[[Категория:OSEDUCONF-2022]]
[[Категория:Draft]]

Версия 20:33, 28 февраля 2024

Докладчик
Екатерина Лапшина

Рассмотрены варианты разработки программного кода с использованием свободного программного обеспечения, которое позволяет создать программный продукт с минимальным набором навыков через визуальные интерфейсы и конструкторы с помощью Low-code платформы.

Видео

Презентация

Thesis

Low-code платформы разработки — это приложение, которое предоставляет графический пользовательский интерфейс для программирования и, таким образом, разрабатывает код с большей скоростью и сокращает затраченные усилия с минимальным количеством кодирования.

Подобные платформы реализованы в том числе, как свободное программное обеспечение (СПО)[1].

Такие среды разработки применяются для создания прикладного программного обеспечения через графический интерфейс пользователя вместо стандартного программирования вручную. С помощью платформ Low-code возможно создание полностью рабочего приложения, а в редких случаях — с использованием дополнительного кодирования. Данные среды разработки также помогают сократить объём программирования, что позволяет ускорить создание приложений. Большим преимуществом является то, что расширяется круг людей, которые могут внести свой вклад в разработку приложения. Low-code платформы также могут снизить первоначальные затраты на настройку, обучение и обслуживание.

Недавнее исследование бостонской компании Mendix показало, что спрос на разработчиков среди ИТ-специалистов достиг апогея. Почти шесть из десяти (57%) говорят, что количество персонала, необходимого для разработки программного обеспечения, увеличивается, а стоимость разработки программного обеспечения растёт (61%).

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

Рассмотрим варианты Low-code платформ для различных целей.

  • NL!A framework — российский бесплатный low-code framework, позволяющий создавать полноценные бизнес-приложения. Модели, заложенные в кодогенератор NL!A framework, позволяют за считаные секунды создать полноценное рабочее бизнес-приложение;
  • OutSystem — это надёжная и гибкая low-code платформа для разработки корпоративных мобильных и веб-приложений, которые разворачиваются в локальной или в гибридных средах;
  • Mendix — это бескодовая (no-code) программная платформа, предоставляющая инструменты для создания, тестирования,развёртывания и проверки программных приложений.


Помимо бесплатных версий популярных платформ, также существуют различные варианты Low-code СПО с открытым исходным кодом, таких как Appsemble, Skyve, Baserow и другие. Наличие таких разнообразных платформ говорит о популярности данных решений и их развитии.

Есть ряд других причин, по которым предприятиям следует рассматривать Low-code платформы:

  1. Более быстрый выход на рынок;
  2. Повышение удовлетворённости клиентов;
  3. Снижение затрат на ИТ-инфраструктуру;
  4. Более эффективное управление приложениями;
  5. Лучшее управление ИТ;


Безусловно, подобные среды разработки — это не панацея, а лишь вариант решения для создания программного продукта, поэтому Low-code платформы имеют ряд минусов:

  1. Сложность в выборе подходящего ресурса;
  2. Ограничения в функционале;
  3. Зависимость от платформы;


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

См также: Лапшина Е.А., Симонов В.Л. Преимущества информационных систем с веб-интерфейсом // XIX Международная конференция «Современные информационные технологии в образовании, науке и промышленности» 29—30 апреля 2021 года, г. Москва.

Тенденции разработки программного обеспечения с использованием Low-code платформ (Екатерина Лапшина, OSEDUCONF-2022)!.jpg

Примечания и ссылки

  1. Платформа разработки low-code — определение