Integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes

The approach to generation of terms by high-level specifications of algorithms is proposed. The generation is performed within the framework of joint use of symbolic computation system and algebro-algorithmic toolkit of program design and synthesis. The term rewriting system complements the algebro-...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2025
1. Verfasser: Yatsenko, O.A.
Format: Artikel
Sprache:Russisch
Veröffentlicht: PROBLEMS IN PROGRAMMING 2025
Schlagworte:
Online Zugang:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/779
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Institution

Problems in programming
_version_ 1859494603116249088
author Yatsenko, O.A.
author_facet Yatsenko, O.A.
author_sort Yatsenko, O.A.
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
collection OJS
datestamp_date 2025-08-27T13:11:22Z
description The approach to generation of terms by high-level specifications of algorithms is proposed. The generation is performed within the framework of joint use of symbolic computation system and algebro-algorithmic toolkit of program design and synthesis. The term rewriting system complements the algebro-algorithmic toolkit with means of transforming sequential and parallel algorithms aimed at their improvement.Problems in programming 2013; 2: 62-70 
first_indexed 2025-09-17T09:22:14Z
format Article
fulltext Формальні методи розробки програмного забезпечення © Е.А. Яценко, 2013 62 ISSN 1727-4907. Проблеми програмування. 2013. № 2 УДК 681.3 Е.А. Яценко ИНТЕГРАЦИЯ ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ АЛГЕБРЫ АЛГОРИТМОВ И ПЕРЕПИСЫВАНИЯ ТЕРМОВ ДЛЯ РАЗРАБОТКИ ЭФФЕКТИВНЫХ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ Предложен подход к генерации термов по высокоуровневым спецификациям алгоритмов. Генерация выполняется в рамках совместного использования системы символьных вычислений и алгеброалгорит- мического инструментария проектирования и синтеза программ. Система переписывания термов до- полняет алгеброалгоритмический инструментарий средствами преобразования последовательных и па- раллельных алгоритмов, направленных на их улучшение. Введение В наши дни однопроцессорные си- стемы практически полностью вытеснены многопроцессорными, позволяющими по- лучать значительный прирост произво- дительности программ. При этом ис- пользование многопроцессорных систем тесно связано с необходимостью распре- деления вычислений на различные про- цессоры и ядра, т. е., связано с распаралле- ливанием программ [1]. Существуют биб- лиотеки, такие как pthreads [2], OpenMP [3], TBB [4] и др., позволяющие разра- ботчикам создавать параллельные про- граммы. При их использовании програм- мист вручную производит разделение ко- да на независимые составляющие, обес- печивает обмен данными и синхрониза- цию между ними (подход pthreads), либо указывает компилятору, как и какие участки кода нужно распараллеливать (подход OpenMP). Однако у таких ручных методов есть существенные недостатки, в частности, связанные с внесением ошибок в программу и временем, требуемым на распараллеливание и отладку. Учитывая процесс распараллеливания последова- тельных программ целесообразно макси- мально автоматизировать, а в идеале – осуществлять полностью автоматически, без участия программиста [5]. В предыдущих работах автора [6–8] выполнено исследование проблемы авто- матизации разработки эффективных про- грамм для многоядерных архитектур с использованием алгеброалгоритмического Инструментария Проектирования и Синте- за программ (ИПС). В основу автоматиза- ции проектирования и программирова- ния в рамках разработанного инстру- ментария положена высокоуровневая фор- мализация конструирования параллель- ных алгоритмов и применение формаль- ных трансформаций программ для опти- мизации их производительности. Под оптимизацией программ понимается до- стижение требуемых качественных ха- рактеристик программы по заданным критериям (память, быстродействие, за- грузка оборудования и др.). Система ИПС базируется на представлении алго- ритмов в системах алгоритмических ал- гебр В.М. Глушкова (САА) [9] и выпол- няет синтез последовательных и парал- лельных (многопоточных) программ на языках программирования Java, C++, Cilk++ по схемам алгоритмов. Для авто- матизации выполнения трансформаций алгоритмов (программ) в работах [7, 8] была использована система символьных вычислений (на основе парадигмы перепи- сывания термов) TermWare [10], которая расширяет возможности системы ИПС и позволяет автоматизировать решение за- дач анализа и обеспечения надежности программного кода. Отметим, что в [7, 8] преобразование схем алгоритмов в тер- мы производилось вручную. Данная ра- бота посвящена разработке средств гене- рации термов по спецификациям алго- ритмов, представленным в САА. Подход проиллюстрирован на параллельном алго- ритме рекурсивной сортировки. Формальні методи розробки програмного забезпечення 63 Материал работы имеет следую- щую структуру. В разделе 1 рассматрива- ются средства формализованного проек- тирования алгоритмов, которые исполь- зуются в системе ИПС. В разделе 2 крат- ко охарактеризована система TermWare и возможности ее применения с ИПС. Раздел 3 посвящен рассмотрению про- цесса генерации текстов программ и термов по схемам алгоритмов в алгебро- алгоритмическом инструментарии. 1. Средства формализованного проектирования программ и алгеброалгоритмический инструментарий В основу разработанного инстру- ментария проектирования и синтеза про- грамм положен аппарат САА и их моди- фикаций [9]. Модифицированные САА (САА-М) предназначены для формали- зации процессов мультиобработки, кото- рые возникают, в частности, при кон- струировании программного обеспечения в мультипроцессорных системах. САА являются двухосновной ал- геброй  ;,BU , где U – множество операторов, B – множество логических условий. Операторы представляют собой отображения информационного множе- ства (ИМ) в себя, логические условия являются отображениями множества ИМ в множество значений 3-значной логики 3E = 0 , 1, , , где 0 – ложь; 1 – истина;  – неопределенность. Сигнатура опера- ций САА 1 2  состоит из системы 1 логических операций, принимающих значения в множестве B , и системы 2 операций, принимающих значения в мно- жестве операторов U . К логическим операциям системы 1 относятся обобщенные булевы опера- ции: дизъюнкция, конъюнкция, отрицание, а также операция левого умножения усло- вия на оператор. К основным операторным операци- ям системы 2 относятся: • “оператор1” ЗАТЕМ “опера- тор2” – последовательное выполнение операторов; • оператор ветвления: ЕСЛИ ‘условие’ ТО “оператор1” ИНАЧЕ “оператор2” КОНЕЦ ЕСЛИ; • оператор цикла: ПОКА НЕ ‘условие_окончания_ цикла’ ЦИКЛ “оператор” КОНЕЦ ЦИКЛА; • оператор цикла типа for: ДЛЯ ("переменная1" ОТ "выражение1" ДО "выражение2") ЦИКЛ "оператор1" КОНЕЦ ЦИКЛА • асинхронное выполнение двух операторов (данная операция называется также асинхронной дизъюнкцией): ("оператор1" ПАРАЛЛЕЛЬНО "оператор2") • синхронизатор, выполняющий за- держку вычислений до тех пор, пока усло- вие 'условие1' не станет истинным: ЖДАТЬ 'условие1' В работах [6, 9] аппарат САА-М применен при решении задач символь- ной мультиобработки: последовательных и параллельных сортировок, поиска, язы- кового процессирования и др. В качестве примера далее приве- дена САА-схема быстрой сортировки вхо- дного массива A длины n. В данном алгоритме вначале выполняется состав- ной оператор "main", считывающий размер входного массива и вызывающий Формальні методи розробки програмного забезпечення 64 затем функцию "qmain(n)". Оператор "qmain (n)" заполняет исходный мас- сив A случайными значениями и вызы- вает функцию "sample_qsort". Данная функция сортирует подмассив, ограни- ченный указателями begin и end, и использует для этого стратегию “разде- ляй и властвуй” [11]. СХЕМА QUICKSORT_SERIAL "main" ==== ===="Определить переменную (n) типа (int) = (1000 * 10000)" ЗАТЕМ ЕСЛИ 'Количество параметров командной строки больше (1)' ТО "Присвоить переменной (n) значение (1)-го параметра командной строки" КОНЕЦ ЕСЛИ ЗАТЕМ "qmain(n)" "qmain(n)" ==== ЛОКАЛЬНЫЕ_ПЕРЕМЕННЫЕ ( "Определить массив (A) тип (int) размер (n)"; "Определить переменную (i) тип (int)"; "Определить переменную (end) тип (int)" ) ЗАТЕМ ДЛЯ (i ОТ 0 ДО n - 1) ЦИКЛ "A[i] := i" КОНЕЦ ЦИКЛА ЗАТЕМ "Перемешать элементы массива (A) длины (n) случайным обра- зом" ЗАТЕМ "Начать отсчет времени" ЗАТЕМ (end := A + n) ЗАТЕМ "sample_qsort(A, end)" ЗАТЕМ "Закончить отсчет времени и вывести результат" ЗАТЕМ "Проверить отсортированность массива (A) длины (n)" "sample_qsort(begin, end)" ==== ЕСЛИ НЕ('begin = end') ТО "Уменьшить (end) на (1)" ЗАТЕМ "Переупорядочить массив (A) с границами (begin)(end) так, чтобы элементы, меньшие опорного элемента (end), находились слева от него, а большие находились справа; сохранить позицию опорно- го элемента в переменной (middle)" ЗАТЕМ "sample_qsort(begin, middle)" "Увеличить (middle) на (1)" ЗАТЕМ "Увеличить (end) на (1)" ЗАТЕМ "sample_qsort(middle, end)" КОНЕЦ ЕСЛИ КОНЕЦ СХЕМЫ QUICKSORT_SERIAL Интегрированный инструментарий основывается на методе диалогового конструирования синтаксически пра- вильных программ [6] и использует раз- личные формы представления алгоритмов в процессе их проектирования – есте- ственно-лингвистическую (САА-схемы), алгебраическую (регулярные схемы) и граф-схемную. Отметим, что интегриро- ванный инструментарий может быть настроен на требуемый входной язык, представленный в алгебре алгоритмов, и выходной (целевой) язык программиро- вания. В настоящее время он поддержи- вает генерацию последовательных и па- раллельных программ на языках C++, Java [6 – 8], Cilk++, а также термов (на языке системы TermWare [10]) по САА- Формальні методи розробки програмного забезпечення 65 схемам алгоритмов. Основными компо- нентами интегрированного инструмента- рия являются: • ДСП-конструктор, предназначен- ный для диалогового проектирования син- таксически правильных схем алгоритмов и синтеза программ; • редактор граф-схем; • трансформатор, осуществляющий диалоговое преобразование регулярных схем; • генератор САА-схем по парамет- ризованным схемам более высокого уров- ня (гиперсхемам); • база данных алгеброалгоритми- ческих спецификаций, содержащая опи- сание конструкций САА-М, базисных (элементарных) операторов и предика- тов, а также их отображение в язык про- граммирования. В основу функционирования ДСП- конструктора положен диалоговый режим с использованием меню подстановок и де- рева конструирования алгоритма (см. при- мер дерева конструирования в [6]). Меню состоит из конструкций САА-М, суперпо- зиция которых позволяет создавать алго- ритмы в упомянутых ранее формах. Вы- бранные пользователем конструкции, а также операторные и логические пере- менные, входящие в них, отображаются в дереве с дальнейшей детализацией пере- менных. В зависимости от типа выбран- ной переменной (операторная или пре- дикатная) система предлагает соответ- ствующий список операций САА-М или элементарных понятий из базы данных. Отметим поуровневый стиль конструиро- вания алгоритма, а также возможность переходов на различные уровни (узлы дерева) с продолжением процесса диало- гового конструирования. Более подробно процесс генерации программного кода по схемам алгоритмов рассматривается в разделе 3. 2. Система TermWare Система TermWare направлена на разработку высокодинамичных приклад- ных систем, к которым предъявляются повышенные требования, как к встроен- ному интеллекту для обеспечения интер- активности разрабатываемых систем, так и удешевлению разработки, сокращению сроков проектирования, улучшения ха- рактеристик повторного их использова- ния (реинжениринга) и сопровождаемости [10]. Она отличается от большинства других систем этого класса как назначе- нием и семантикой используемых средств, так и технологией их реализации. Язык TermWare это координационный язык- оболочка, предназначенный для написа- ния предметно-ориентированных частей приложений, встраиваемых в прикладную систему для реализации функций взаимо- действия этой системы с программным окружением. TermWare оформлена как библио- тека языка Java, встраиваемая в про- граммное приложение. Для разработчика система термов выглядит как совокуп- ность экземпляров класса ITermSystem, с возможностью управления набором правил и редуцирования термов. Набо- ры правил описаны на языке TermWare и хранятся в отдельных файлах. Осно- вой языка являются термы, т. е. выраже- ния вида ), ,( 1 nxxf  . В качестве ато- марных термов используются переменные (которые записываются в виде $identi- fier), а также константы определенных ти- пов данных (числовых, логических, стро- ковых и атомарного – неизменяемые строки). Набор правил содержит сами пра- вила, а также дополнительную информа- цию (название системы правил, исполь- зуемая база фактов, применяемая страте- гия). Типичное правило в TermWare за- писывается следующим образом: source  condition   destination  action , где используются четыре терма: source – входной образец; destination – выходной образец; condition – условие, определяю- щее применимость правила; action – дей- Формальні методи розробки програмного забезпечення 66 ствие, выполняемое при срабатывании правила. Выполняемые действия и про- веряемые условия в основном являются вызовами методов в БД фактов. Таким образом, осуществляется связь между правилами на языке TermWare и кодом на Java. Кроме того, возможно написа- ние собственной стратегии, определяю- щей порядок применения правил. В простейшем случае переписыва- ющее правило это выражение типа x y , которое переписывает терм x в y . Пусть, например, имеется терм plus  ,x y , складывающий два числа. Тогда в резуль- тате применения к нему набора из двух правил x  y, y  z, получим терм plus  ,z z . Основой функционирования си- стемы TermWare в рамках совместного использования с ИПС является создание и применение систем правил. Каждая система правил соответствует некоторо- му преобразованию схемы алгоритма. Кроме самих правил TermWare, система правил может включать дополнительную информацию, например, описание преоб- разования или ссылки на другие систе- мы правил, которые могут применяться совместно с данной. Возможны также ин- формационные системы правил, которые не осуществляют преобразование схемы, а вычисляют некоторые ее характеристи- ки. Другие возможности совместного ис- пользования более подробно рассмотре- ны в работе [8]. Для интеграции с систе- мой TermWare инструментарий ИПС был дополнен средствами генерации термов по схемам алгоритмов. 3. Генерация программ и термов по схемам алгоритмов По полученному в процессе кон- струирования алгоритма дереву, а также в соответствии с реализациями элементар- ных операторов и условий на целевом языке, инструментарий ИПС выполняет генерацию кода на выбранном языке программирования или термов TermWare. В процессе синтеза управляющие кон- струкции САА-схемы алгоритма и базис- ные операторы и предикаты отображают- ся в соответствующие операторы языка программирования в соответствии с их описанием в БД. Составные операторы могут быть представлены как подпро- граммы (методы). В случае генерации объектно-ориентированной программы на вход генератора поступает также файл, который содержит каркасное описание основного класса программы (без реали- заций методов), в который выполняется подстановка сгенерированного кода. Для реализации параллельных про- грамм в БД используются различные средства:  потоки с использованием функ- ций WinAPI [7, 12];  параллельные операции MPI [13], ориентированные на обмен сообщениями между процессами;  операторы языка параллельного программирования Cilk++ [14]. Для распараллеливания рассмот- ренного в разделе 1 алгоритма быстрой сортировки был использован язык Cilk++, так как он облегчает программирование рекурсивных параллельных программ. В табл. 1 приведено описание в БД ИПС основных операторных операций САА: композиции, альтернативы, цикла, асинхронной дизъюнкции и синхрониза- тора [9], реализации которых на языке TermWare используются в процессе гене- рации термов, а на языке Cilk++ – для ге- нерации параллельных программ. Приве- денные реализации содержат строки ^оператор1^ и ^оператор2^, вместо которых в процессе генерации будут под- ставлены тексты реализаций операндов этих операций. Формальні методи розробки програмного забезпечення 67 Таблица 1. Основные операторные операции САА и их реализации на языках TermWare и C++ Естественно- лингвистическая форма Реализация на языке TermWare Реализация на языке Cilk++ “оператор1” ЗАТЕМ “оператор2” then ( ^оператор1^, ^оператор2^) ^оператор1^; ^оператор2^ ЕСЛИ “условие1” ТО “оператор1” ИНАЧЕ “оператор2” КОНЕЦ ЕСЛИ IF (^условие1^, ^оператор1^, ELSE (^оператор2^) ) if (^условие1^) { ^оператор1^ } else { ^оператор2^ } ПОКА НЕ ‘условие1’ ЦИКЛ “оператор1” КОНЕЦ ЦИКЛА WHILE_NOT (^условие1^, ^оператор1^ ) while (!(^условие1^)) { ^оператор1^ } ("оператор1" ПАРАЛЛЕЛЬНО "оператор2") Parallel ( ^оператор1^, ^оператор2^ ) cilk_spawn ^оператор1^; ^оператор2^ ЖДАТЬ 'условие1' WAIT (^условие1^) cilk_sync; В табл. 2 приведены примеры описания в БД базисных элементов для рассмотренного алгоритма быстрой сор- тировки. Естественно-лингвистическая форма описания базисного элемента со- держит в себе имена формальных парамет- ров в скобках. Фактические параметры, которые задаются в САА-схемах, заменя- ют при генерации программы соответ- ствующие формальные параметры в тексте реализации базисного понятия на языке программирования. Признаком формаль- ного параметра в реализации является символ “%”, за которым следует порядко- вый номер параметра в тексте базисного оператора или предиката. Например, в ба- зисном операторе "Увеличить (var_id) на (value)" присутствует два параметра – идентификатор переменной и значение, на которое ее следует увеличить. Значение этих параметров будет подставлено вместо соответствующих формальных параметров в реализации этого оператора. Таблица 2. Примеры описания в БД базисных операторов Естественно- лингвистическая форма Реализация на языке TermWare Реализация на языке C++ "Определить массив (name) тип (type) размер (size)" Array(%1, %2, "%3") %2* %1 = new %2[%3]; "Определить переменную (x) типа (тип)" Variable(%1, %2) %2 %1; "Увеличить (var_id) на (value)" Inc(%1, %2) %1 = %1 + %2; "Перемешать массив (name) длины (size) слу- чайным образом" ShuffleArrayRandomly (%1, %2) std::random_shuffle (%1, %1 + %2); Формальні методи розробки програмного забезпечення 68 В результате интеграции системы TermWare и разработанного инструмента- рия проектирования и синтеза программ, в TermWare передается термальное пред- ставление алгоритма, подлежащего транс- формации и требуемые для этого равен- ства. Затем по преобразованному в TermWare алгоритму может быть произве- дена генерация соответствующей про- граммы на языке программирования. Далее в качестве примера приведен терм, сгенерированный по схеме последо- вательного алгоритма быстрой сортиров- ки, рассмотренной в разделе 1. Root ( main( then ( Variable(n, int, "1000 * 10000"), then ( IF (Greater(CmdLineParams, 1), Assign(n, 1)), CALL(qmain(n))))), qmain(Params(n), then ( Locals ( Array(a, int, "n"), Variable(i, int), Variable(end, int) ), then ( ForLoop(i, 0, Minus(n, 1), AssignArrayElement (a, i, i) ), then ( ShuffleArrayRandomly(a, n), then ( START_TIME, then ( then ( Assign(end, Plus(a, n)), sample_qsort(Params(begin, end), IF (NOT(Equal(begin, end)), then ( Dec(end, 1), then ( Partition(a, begin, end, end), then ( CALL(sample_qsort(begin, middle)), then ( Inc(middle, 1), then ( Inc(end, 1), CALL(sample_qsort(middle, end) ))))))) ) ) Для распараллеливания приведен- ного алгоритма в функцию sample_qsort необходимо добавить операцию асинхрон- ного выполнения операторов и синхрони- затор (см. раздел 1). Для этого применяют- ся следующие два правила: 1. then(CALL($x), then ($y, $z)) -> Parallel ( CALL($x), then($y, $z)) 2. then($x1, Parallel($x2, $x3)) -> then($x1, then(Parallel($x2, $x3), WAIT(AllThreadsCompleted(n)) )) В результате применения данных правил функция sample_qsort будет иметь вид: sample_qsort( Params(begin,end), IF(NOT(Equal(begin,end)), then ( Dec(end,1), then( Partition(a,begin,end,end), then( Parallel( CALL(sample_qsort (begin,middle)), then( Inc(middle,1), then( Inc(end,1),CALL(sample_qsort (middle,end)))) ), WAIT(AllThreads Completed(n))))))) Формальні методи розробки програмного забезпечення 69 Таким образом, в результате распа- раллеливания в первой ветви операции Parallel вызывается оператор sample_qsort (begin,middle), а в другой – sample_qsort(middle,end). Ветви создаются рекурсивно; их коли- чество в алгоритме явно не указано, и задается при вызове программы. Синхро- низатор AIT(AllThreadsCompleted(n)) выполняет задержку вычислений до тех пор, пока все ветви не закончат вычис- ления. Как уже упоминалось, для реали- зации рассмотренного алгоритма сорти- ровки был использован язык параллель- ного программирования Сilk++. Полу- ченная программа была выполнена на многоядерной архитектуре Intel Core 2 Quad CPU, 2.51 ГГц. Время ее выполне- ния показано на рисунке. Ускорение при выполнении на 2, 3 и 4 процессо- рах составило 2; 2.9 и 3.8 соответствен- но, что свидетельствует о хорошей сте- пени распараллеливаемости и масштаби- руемости вычислений. Рисунок. Время выполнения параллельной программы быстрой сортировки на 4-ядерном процессоре; размер входного массива 5  10 7 элементов Заключение Предложен подход к генерации термов по высокоуровневым специфика- циям алгоритмов. Генерация выполняется в рамках совместного использования си- стемы символьных вычислений TermWare и алгеброалгоритмического инструмента- рия проектирования и синтеза программ ИПС. Система TermWare дополняет ИПС средствами преобразования последова- тельных и параллельных алгоритмов, направленных на их улучшение. Основой функционирования системы TermWare в рамках ИПС является создание и примене- ние систем правил, каждая из которых со- ответствует некоторой трансформации схемы алгоритма. Отметим, что TermWare также позволяет расширить возможности ИПС в части автоматизации решения задач анализа и обеспечения надежности про- граммного кода. Перспективами дальнейших иссле- дований в данном направлении является дополнение системы ИПС средствами об- ратного преобразования термов в схемы алгоритмов, а также настройка обоих си- стем на генерацию программ в других языках, поддерживающих распараллели- вание. 1. Система автоматизации распараллелива- ния программ на промежуточном пред- ставлении LLVM. – http://www.dataved.ru/2011/06/llvmautoparal lelizer.html. 2. Multi-Threaded Programming With POSIX Threads. – http://users.actcom.co.il/~choo./ lupg/tutorials/multi-thread/multi-thread.html. 3. OpenMP Application Program Interface. – http://www.openmp.org/mp-documents/ spec30.pdf. 4. Intel Threading Building Blocks. – http://threadingbuildingblocks.org 5. Клинов М.С., Крюков В.А. Автоматическое распараллеливание Фортран-программ. Отображение на кластер. – http://www.ict.edu.ru/vconf/files/11879.pdf. 6. Дорошенко Е.А., Яценко Е.А. О синтезе программ на языке Java по алгеброалго- ритмическим спецификациям // Проблеми програмування. – 2006. – № 4. – С. 58–70. 7. Дорошенко Е.А., Жереб К.А., Яценко Е.А. Формализованное проектирование эффек- тивных многопоточных программ // Про- блеми програмування. – 2007. – № 1. – С. 17–30. 8. Дорошенко А.Е., Жереб К.А., Яценко Е.А. Об оценке сложности и координации вы- числений в многопоточных программах // Проблеми програмування. – 2007. – № 2. – С. 41–55. http://www.dataved.ru/ http://users.actcom.co.il/~choo./ http://www.openmp.org/mp-documents/ http://threadingbuildingblocks.org/ Формальні методи розробки програмного забезпечення 70 9. Андон Ф.И., Дорошенко А.Е., Цейт- лин Г.Е., Яценко Е.А. Алгеброалгоритмиче- ские модели и методы параллельного про- граммирования. – Киев: Академпериодика, 2007. – 631 с. 10. Дорошенко А.Е., Шевченко Р.С. Система символьных вычислений для программи- рования динамических приложений // Про- блеми програмування. – 2005. – № 4. – С. 718–727. 11. Кнут Д. Искусство программирования для ЭВМ. – М.: Мир, 1978. – Т. 3. – 843 с. 12. Guptha S. Multithreaded Programming in a Microsoft Win32* Environment. – http://eng.harran.edu.tr/~nbesli/SP/senkroniza syon.pdf. 13. Writing Message-Passing Parallel Programs with MPI. – http://www.zib.de/zibdoc/mpikurs/mpicourse. pdf. 14. Intel Cilk++ SDK Programmer's Guide. – http://www.clear.rice.edu/comp422/resources/ Intel_Cilk++_Programmers_Guide.pdf. Получено 20.07.2012 Об авторе: Яценко Елена Анатольевна, кандидат физико-математических наук, старший научный сотрудник. Место работы автора: Институт программных систем НАН Украины. Тел.: (044) 424 4972, E-mail: oayat@ukr.net http://eng.harran.edu.tr/~nbesli/SP/senkronizasyon.pdf http://eng.harran.edu.tr/~nbesli/SP/senkronizasyon.pdf http://www.zib.de/zibdoc/
id pp_isofts_kiev_ua-article-779
institution Problems in programming
keywords_txt_mv keywords
language Russian
last_indexed 2025-09-17T09:22:14Z
publishDate 2025
publisher PROBLEMS IN PROGRAMMING
record_format ojs
resource_txt_mv ppisoftskievua/a0/ef5e2c451aaa773d2abe164087aceba0.pdf
spelling pp_isofts_kiev_ua-article-7792025-08-27T13:11:22Z Integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes Интеграция инструментальных средств алгебры алгоритмов и переписывания термов для разработки эффективных параллельных программ Yatsenko, O.A. UDC 681.3 УДК 681.3 The approach to generation of terms by high-level specifications of algorithms is proposed. The generation is performed within the framework of joint use of symbolic computation system and algebro-algorithmic toolkit of program design and synthesis. The term rewriting system complements the algebro-algorithmic toolkit with means of transforming sequential and parallel algorithms aimed at their improvement.Problems in programming 2013; 2: 62-70  Предложен подход к генерации термов по высокоуровневым спецификациям алгоритмов. Генерация выполняется в рамках совместного использования системы символьных вычислений и алгеброалгоритмического инструментария проектирования и синтеза программ. Система переписывания термов дополняет алгеброалгоритмический инструментарий средствами преобразования последовательных и параллельных алгоритмов, направленных на их улучшение.Problems in programming 2013; 2: 62-70 PROBLEMS IN PROGRAMMING ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПРОБЛЕМИ ПРОГРАМУВАННЯ 2025-08-27 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/779 PROBLEMS IN PROGRAMMING; No 2 (2013); 62-70 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 2 (2013); 62-70 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 2 (2013); 62-70 1727-4907 ru https://pp.isofts.kiev.ua/index.php/ojs1/article/view/779/831 Copyright (c) 2025 PROBLEMS IN PROGRAMMING
spellingShingle
UDC 681.3
Yatsenko, O.A.
Integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes
title Integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes
title_alt Интеграция инструментальных средств алгебры алгоритмов и переписывания термов для разработки эффективных параллельных программ
title_full Integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes
title_fullStr Integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes
title_full_unstemmed Integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes
title_short Integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes
title_sort integration of algorithm algebra and term rewriting tools for developing efficient parallel programmes
topic
UDC 681.3
topic_facet
UDC 681.3

УДК 681.3
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/779
work_keys_str_mv AT yatsenkooa integrationofalgorithmalgebraandtermrewritingtoolsfordevelopingefficientparallelprogrammes
AT yatsenkooa integraciâinstrumentalʹnyhsredstvalgebryalgoritmoviperepisyvaniâtermovdlârazrabotkiéffektivnyhparallelʹnyhprogramm