Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств

Розглянуто розвиток алгеброалгоритмічного інструментарію для конструювання паралельних алгоритмів на основі спільного використання алгеброалгоритмічної методології специфікації і розробки програм та неалгоритмічних (евристичних) методів генерації коду. Евристичною частиною системи є динамічне налашт...

Full description

Saved in:
Bibliographic Details
Published in:Кибернетика и системный анализ
Date:2010
Main Authors: Дорошенко, А.Е., Котюк, Н.В., Николаев, С.С., Цейтлин, Г.Е., Яценко, Е.А.
Format: Article
Language:Russian
Published: Інститут кібернетики ім. В.М. Глушкова НАН України 2010
Subjects:
Online Access:https://nasplib.isofts.kiev.ua/handle/123456789/45251
Tags: Add Tag
No Tags, Be the first to tag this record!
Journal Title:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Cite this:Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств / А.Е. Дорошенко, Н.В. Котюк, С.С. Николаев, Г.Е. Цейтлин, Е.А. Яценко // Кибернетика и системный анализ. — 2010. — № 4. — С. 151-158. — Бібліогр.: 9 назв. — рос.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
id nasplib_isofts_kiev_ua-123456789-45251
record_format dspace
spelling Дорошенко, А.Е.
Котюк, Н.В.
Николаев, С.С.
Цейтлин, Г.Е.
Яценко, Е.А.
2013-06-10T18:54:34Z
2013-06-10T18:54:34Z
2010
Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств / А.Е. Дорошенко, Н.В. Котюк, С.С. Николаев, Г.Е. Цейтлин, Е.А. Яценко // Кибернетика и системный анализ. — 2010. — № 4. — С. 151-158. — Бібліогр.: 9 назв. — рос.
0023-1274
https://nasplib.isofts.kiev.ua/handle/123456789/45251
681.3
Розглянуто розвиток алгеброалгоритмічного інструментарію для конструювання паралельних алгоритмів на основі спільного використання алгеброалгоритмічної методології специфікації і розробки програм та неалгоритмічних (евристичних) методів генерації коду. Евристичною частиною системи є динамічне налаштування програмного коду на цільову платформу і його оптимізація з використанням генерації коду, що самонавчається, і евристичних технологій.
The paper proposes a new approach and a system to develop parallel algorithms based on the joint use of the algebraic-algorithmic methodology of specification and development and non-algorithmic (heuristic) techniques for code generation. The algebraic part of the methodology provides the formalized process of parallel program design through high-level algebra-algorithmic specifications and automating transformations up to program code in a standard programming language. The heuristic part of the system stands for dynamical adjustment of program code for a target platform and its optimization using self-learning code generation and heuristic technologies.
ru
Інститут кібернетики ім. В.М. Глушкова НАН України
Кибернетика и системный анализ
Программно-технические комплексы
Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
Розвиток інструментарію алгебри алгоритміки з метою розробки паралельних програм із використанням евристичних засобів
Development of algebra algorithmic tools for designing parallel programs with heuristic facilities
Article
published earlier
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
collection DSpace DC
title Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
spellingShingle Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
Дорошенко, А.Е.
Котюк, Н.В.
Николаев, С.С.
Цейтлин, Г.Е.
Яценко, Е.А.
Программно-технические комплексы
title_short Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
title_full Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
title_fullStr Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
title_full_unstemmed Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
title_sort развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
author Дорошенко, А.Е.
Котюк, Н.В.
Николаев, С.С.
Цейтлин, Г.Е.
Яценко, Е.А.
author_facet Дорошенко, А.Е.
Котюк, Н.В.
Николаев, С.С.
Цейтлин, Г.Е.
Яценко, Е.А.
topic Программно-технические комплексы
topic_facet Программно-технические комплексы
publishDate 2010
language Russian
container_title Кибернетика и системный анализ
publisher Інститут кібернетики ім. В.М. Глушкова НАН України
format Article
title_alt Розвиток інструментарію алгебри алгоритміки з метою розробки паралельних програм із використанням евристичних засобів
Development of algebra algorithmic tools for designing parallel programs with heuristic facilities
description Розглянуто розвиток алгеброалгоритмічного інструментарію для конструювання паралельних алгоритмів на основі спільного використання алгеброалгоритмічної методології специфікації і розробки програм та неалгоритмічних (евристичних) методів генерації коду. Евристичною частиною системи є динамічне налаштування програмного коду на цільову платформу і його оптимізація з використанням генерації коду, що самонавчається, і евристичних технологій. The paper proposes a new approach and a system to develop parallel algorithms based on the joint use of the algebraic-algorithmic methodology of specification and development and non-algorithmic (heuristic) techniques for code generation. The algebraic part of the methodology provides the formalized process of parallel program design through high-level algebra-algorithmic specifications and automating transformations up to program code in a standard programming language. The heuristic part of the system stands for dynamical adjustment of program code for a target platform and its optimization using self-learning code generation and heuristic technologies.
issn 0023-1274
url https://nasplib.isofts.kiev.ua/handle/123456789/45251
citation_txt Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств / А.Е. Дорошенко, Н.В. Котюк, С.С. Николаев, Г.Е. Цейтлин, Е.А. Яценко // Кибернетика и системный анализ. — 2010. — № 4. — С. 151-158. — Бібліогр.: 9 назв. — рос.
work_keys_str_mv AT dorošenkoae razvitieinstrumentariâalgebryalgoritmikiscelʹûrazrabotkiparallelʹnyhprogrammsispolʹzovaniemévrističeskihsredstv
AT kotûknv razvitieinstrumentariâalgebryalgoritmikiscelʹûrazrabotkiparallelʹnyhprogrammsispolʹzovaniemévrističeskihsredstv
AT nikolaevss razvitieinstrumentariâalgebryalgoritmikiscelʹûrazrabotkiparallelʹnyhprogrammsispolʹzovaniemévrističeskihsredstv
AT ceitlinge razvitieinstrumentariâalgebryalgoritmikiscelʹûrazrabotkiparallelʹnyhprogrammsispolʹzovaniemévrističeskihsredstv
AT âcenkoea razvitieinstrumentariâalgebryalgoritmikiscelʹûrazrabotkiparallelʹnyhprogrammsispolʹzovaniemévrističeskihsredstv
AT dorošenkoae rozvitokínstrumentaríûalgebrialgoritmíkizmetoûrozrobkiparalelʹnihprogramízvikoristannâmevrističnihzasobív
AT kotûknv rozvitokínstrumentaríûalgebrialgoritmíkizmetoûrozrobkiparalelʹnihprogramízvikoristannâmevrističnihzasobív
AT nikolaevss rozvitokínstrumentaríûalgebrialgoritmíkizmetoûrozrobkiparalelʹnihprogramízvikoristannâmevrističnihzasobív
AT ceitlinge rozvitokínstrumentaríûalgebrialgoritmíkizmetoûrozrobkiparalelʹnihprogramízvikoristannâmevrističnihzasobív
AT âcenkoea rozvitokínstrumentaríûalgebrialgoritmíkizmetoûrozrobkiparalelʹnihprogramízvikoristannâmevrističnihzasobív
AT dorošenkoae developmentofalgebraalgorithmictoolsfordesigningparallelprogramswithheuristicfacilities
AT kotûknv developmentofalgebraalgorithmictoolsfordesigningparallelprogramswithheuristicfacilities
AT nikolaevss developmentofalgebraalgorithmictoolsfordesigningparallelprogramswithheuristicfacilities
AT ceitlinge developmentofalgebraalgorithmictoolsfordesigningparallelprogramswithheuristicfacilities
AT âcenkoea developmentofalgebraalgorithmictoolsfordesigningparallelprogramswithheuristicfacilities
first_indexed 2025-11-25T03:38:17Z
last_indexed 2025-11-25T03:38:17Z
_version_ 1850505241118638080
fulltext ÓÄÊ 681.3 À.Å. ÄÎÐÎØÅÍÊÎ, Í.Â. ÊÎÒÞÊ, Ñ.Ñ. ÍÈÊÎËÀÅÂ, Ã.Å. ÖÅÉÒËÈÍ, Å.À. ßÖÅÍÊÎ ÐÀÇÂÈÒÈÅ ÈÍÑÒÐÓÌÅÍÒÀÐÈß ÀËÃÅÁÐÛ ÀËÃÎÐÈÒÌÈÊÈ Ñ ÖÅËÜÞ ÐÀÇÐÀÁÎÒÊÈ ÏÀÐÀËËÅËÜÍÛÕ ÏÐÎÃÐÀÌÌ Ñ ÈÑÏÎËÜÇÎÂÀÍÈÅÌ ÝÂÐÈÑÒÈ×ÅÑÊÈÕ ÑÐÅÄÑÒ Êëþ÷åâûå ñëîâà: àëãåáðû àëãîðèòìîâ, ïðîåêòèðîâàíèå ïðîãðàìì, ñèíòåç ïðîãðàìì, îïòèìèçàöèÿ àëãîðèòìîâ, ýâðèñòèêà, èñêóññòâåííûé èíòåëëåêò . ÂÂÅÄÅÍÈÅ Ïðèìåíåíèå àëãåáðàè÷åñêîé ìåòîäîëîãèè â ïðîãðàììèðîâàíèè ÿâëÿåòñÿ îäíîé èç ñîâðåìåííûõ òåíäåíöèé â èíôîðìàòèêå [1, 2].  íàñòîÿùåé ñòàòüå èñïîëüçó- þòñÿ ìåòîäû, îñíîâàííûå íà àëãåáðå àëãîðèòìèêè (ÀÀ), ðàçâèâàþùåéñÿ â ðàì- êàõ óêðàèíñêîé àëãåáðî-êèáåðíåòè÷åñêîé øêîëû [3, 4]. ÀÀ áëèçêà ê êîíöåïöèÿì àëãåáðàè÷åñêîé àëãîðèòìèêè [2] è ïîðîæäàþùåãî ïðîãðàììèðîâàíèÿ [5] è ïðåä- íàçíà÷åíà äëÿ ôîðìàëèçàöèè çíàíèé î ïðåäìåòíûõ îáëàñòÿõ ñ èñïîëüçîâàíèåì àëãåáðàè÷åñêèõ ñðåäñòâ. Íà îñíîâå ÀÀ áûëà ðåàëèçîâàíà èíñòðóìåíòàëüíàÿ ñèñ- òåìà ïðîãðàììèðîâàíèÿ (íàçâàííàÿ èíòåãðèðîâàííûì èíñòðóìåíòàðèåì ïðîåêòè- ðîâàíèÿ è ñèíòåçà ïðîãðàìì, ÈÏÑ [6, 7]).  ñèñòåìå ñîâìåùàåòñÿ òðè ôîðìû ïðåäñòàâëåíèÿ çíàíèé: àíàëèòè÷åñêàÿ (ôîðìóëà â àëãåáðå àëãîðèòìîâ), åñòåñ- òâåííî-ëèíãâèñòè÷åñêàÿ (òåêñòîâàÿ) è ãðàôîâàÿ (ãðàô-ñõåìû). ÈÏÑ îñíîâàí íà ìå- òîäå äèàëîãîâîãî êîíñòðóèðîâàíèÿ ñèíòàêñè÷åñêè ïðàâèëüíûõ àëãîðèòìîâ, îðèåí- òèðîâàííîì íà óñòðàíåíèå ñèíòàêñè÷åñêèõ îøèáîê â ïðîöåññå ïðîåêòèðîâàíèÿ [3]. Äëÿ ÀÀ áûë ðàçðàáîòàí àïïàðàò ýêâèâàëåíòíûõ ïðåîáðàçîâàíèé [3, 4], îáåñïå÷è- âàþùèé âîçìîæíîñòü óëó÷øåíèÿ îáúåêòîâ ïðîåêòèðîâàíèÿ ïî âûáðàííûì êðèòåðè- ÿì (íàïðèìåð, ïàìÿòü, áûñòðîäåéñòâèå è ò.ä.).  êà÷åñòâå êîìïîíåíòû ÈÏÑ áûë ðàçðàáîòàí äèàëîãîâûé òðàíñôîðìàòîð ðåãóëÿðíûõ ñõåì, áàçèðóþùèéñÿ íà èñ- ïîëüçîâàíèè ñîîòíîøåíèé è òîæäåñòâ àëãåáð àëãîðèòìîâ.  [7] èññëåäîâàëîñü ïðèìåíåíèå ñèñòåìû ïåðåïèñûâàíèÿ ïðàâèë TermWare äëÿ ïðåîáðàçîâàíèÿ ñõåì àëãîðèòìîâ. ÈÏÑ îáåñïå÷èâàåò ïîøàãîâóþ ðàçðàáîòêó ïðîãðàìì ñ èñïîëüçîâàíè- åì òðàíñôîðìàöèé, íà÷èíàÿ îò ôîðìàëüíîé ñïåöèôèêàöèè è çàêàí÷èâàÿ ïðîãðàì- ìíûì êîäîì â öåëåâîì ÿçûêå ïðîãðàììèðîâàíèÿ. Îäíàêî ïðè ýòîì îñòàåòñÿ ïðî- áëåìà ïðîèçâîäèòåëüíîñòè ðàçðàáàòûâàåìûõ ïðîãðàìì, êîòîðàÿ íå ìîæåò áûòü ïîëíîñòüþ ðåøåíà ââèäó âûñîêîé ñëîæíîñòè ãåíåðàöèè êîäà äëÿ áûñòðî ðàçâè- âàþùèõñÿ àïïàðàòíûõ ïëàòôîðì. Òàêèì îáðàçîì, çàäà÷à ðàçðàáîòêè ïðîãðàìì ñîñòîèò â ñîâìåùåíèè òðàíñôîðìàöèîííîé ìîùíîñòè ôîðìàëüíîé àëãåáðàè÷åñ- êîé ìåòîäîëîãèè ñ àäàïòèâíûìè òåõíîëîãèÿìè ñàìîíàñòðàèâàþùèõñÿ ñèñòåì ïðîãðàììèðîâàíèÿ.  íàñòîÿùåé ñòàòüå àëãåáðîàëãîðèòìè÷åñêèå ñðåäñòâà ÈÏÑ èñïîëüçóþòñÿ ñî- âìåñòíî ñ ñèñòåìîé ïðîãðàììèðîâàíèÿ MySHA [8], êîòîðàÿ îáåñïå÷èâàåò ñàìîîáó- ÷àþùóþñÿ ãåíåðàöèþ êîäà è äèíàìè÷åñêîå íàñòðàèâàíèå ïðîãðàìì íà öåëåâóþ àï- ïàðàòíóþ è ïðîãðàììíóþ ïëàòôîðìû.  ñëó÷àå èñïîëüçîâàíèÿ MySHA âûñîêî- óðîâíåâûé êîä, ðàçðàáîòàííûé â ÈÏÑ, ïîäëåæèò äèíàìè÷åñêîìó ïðåîáðàçîâàíèþ äëÿ íàñòðîéêè íà öåëåâóþ ïëàòôîðìó, â ÷àñòíîñòè íà ìíîãîÿäåðíûé ïðîöåññîð èëè ãðàôè÷åñêèé àêñåëåðàòîð. MySHA âêëþ÷àåò àâòîìàòèçèðîâàííóþ ñèñòåìó ðàçâåð- òûâàíèÿ ÏÎ íà âû÷èñëèòåëüíîì êëàñòåðå è òåõíîëîãèþ èíòåëëåêòóàëüíîé îïòèìè- çàöèè êîäà. Ñèñòåìà óðàâíîâåøèâàåò ïîòåíöèàëüíûå íåäîñòàòêè ðàçðàáîòàííûõ ðà- íåå ñðåäñòâ òðàíñôîðìàöèè ïðîãðàìì ÈÏÑ (íàïðèìåð, ñëèøêîì áîëüøóþ çàâèñè- ìîñòü îò ñòðóêòóðû êîíêðåòíîé ïðîãðàììû), èñïîëüçóÿ ýâðèñòè÷åñêîå ïðîãðàììèðîâàíèå. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 151 © À.Å. Äîðîøåíêî, Í.Â. Êîòþê, Ñ.Ñ. Íèêîëàåâ, Ã.Å. Öåéòëèí, Å.À. ßöåíêî, 2010 1. ÔÎÐÌÀËÈÇÎÂÀÍÍÎÅ ÏÐÎÅÊÒÈÐÎÂÀÍÈÅ ÏÐÎÃÐÀÌÌ Â ÈÍÒÅÃÐÈÐÎÂÀÍÍÎÌ ÈÍÑÒÐÓÌÅÍÒÀÐÈÈ Ðàçðàáîòàííûé ÈÏÑ îñíîâàí íà àëãåáðå àëãîðèòìèêè, êîòîðàÿ ïðåäñòàâëÿåò ñîáîé äâóõóðîâíåâóþ ñèñòåìó.  îñíîâó âåðõíåãî óðîâíÿ ïîëîæåíà òåîðèÿ êëîíîâ (ñåìåéñòâ àëãåáð) [3, 9]. Ïîä êëîíîì ïîíèìàåòñÿ óíèâåðñàëüíàÿ àëãåáðà C F SUPERk� � �{ }; , ãäå { }Fk — ñîâîêóïíîñòü îñíîâ, k n� 1 2, ,... , . Êàæäàÿ îñíîâà ñîñòîèò èç ìíîæåñòâà îïåðàöèé îïðåäåëåííûõ òèïîâ (ëîãè÷åñêîãî, îïåðàòîðíî- ãî, ñòðóêòóð ïàìÿòè è äàííûõ è äð.); SUPER — ñèãíàòóðà êëîíà, ñîäåðæàùàÿ îïåðàöèþ ñóïåðïîçèöèè îïåðàöèé, ïðèíàäëåæàùèõ îñíîâàì. Êëàññè÷åñêèì ïðèìåðîì îäíîîñíîâíîãî êëîíà ÿâëÿåòñÿ äâóçíà÷íàÿ àëãåáðà ëîãèêè — àëãåáðà Ïîñòà (PA) [9]: PA L SUPER� � �( );2 , ãäå L( )2 — ìíîæåñòâî âñåõ áóëåâûõ ôóíêöèé. Ïîä àëãîðèòìè÷åñêèì êëîíîì ( )AC ïîíèìàåòñÿ äâóõîñíîâíàÿ ñèñòåìà AC OP L SUPER� � �{ , ( )};2 , ãäå OP — îïåðàòîðíàÿ îñíîâà, ñîñòîÿùàÿ èç ìíîæåñòâà íåèíòåðïðåòèðîâàííûõ îïåðàòîðíûõ ñõåì. Âûáîð ñèñòåìû îáðàçóþùèõ AC îïðåäåëÿåò ñèñòåìó àëãîðèò- ìè÷åñêèõ êîíñòðóêöèé, ïðèñóùóþ òîìó èëè èíîìó ìåòîäó êîíñòðóèðîâàíèÿ àë- ãîðèòìîâ è ïðîãðàìì (ñòðóêòóðíîìó, íåñòðóêòóðíîìó, îáúåêòíî-îðèåíòèðîâàííî- ìó).  çàâèñèìîñòè îò ïîñòàâëåííîé çàäà÷è è âûáðàííîãî ìåòîäà ïðîãðàììèðî- âàíèÿ äàëåå íà îñíîâå AC îñóùåñòâëÿåòñÿ ïîñòðîåíèå è èññëåäîâàíèå òðåáóåìîé àëãåáðû àëãîðèòìîâ. Íà íèæíåì óðîâíå àëãåáðû àëãîðèòìèêè îñóùåñòâëÿåòñÿ ïîñòðîåíèå âïîëíå êîíêðåòíîé ïðèêëàäíîé àëãåáðû àëãîðèòìîâ, îðèåíòèðîâàííîé íà ïðåäñòàâëåíèå àëãîðèòìè÷åñêèõ çíàíèé î âûáðàííîé ïðåäìåòíîé îáëàñòè. Ñõåìà îáðàçîâàíèÿ ïðè- êëàäíîé àëãåáðû áàçèðóåòñÿ íà èíòåðïðåòàöèè ýëåìåíòàðíûõ îïåðàòîðíûõ è ïðåäè- êàòíûõ ïåðåìåííûõ äëÿ àëãåáðû àëãîðèòìîâ, ïîñòðîåííîé íà âåðõíåì óðîâíå. Ïðèìåðîì àëãåáðû àëãîðèòìîâ ÿâëÿþòñÿ ñèñòåìû àëãîðèòìè÷åñêèõ àëãåáð (ÑÀÀ) Â.Ì. Ãëóøêîâà [3, 4], ïðåäñòàâëÿþùèå ñîáîé äâóõîñíîâíóþ àëãåáðó ÑÀÀ � � �U B, ; � , ãäå U — ìíîæåñòâî îïåðàòîðîâ, B — ìíîæåñòâî ëîãè÷åñêèõ óñëîâèé (ïðåäèêàòîâ). Îïåðàòîðû ÿâëÿþòñÿ îòîáðàæåíèÿìè èíôîðìàöèîííîãî ìíîæåñòâà (ÈÌ) â ñå- áÿ, ëîãè÷åñêèå óñëîâèÿ ÿâëÿþòñÿ îòîáðàæåíèÿìè ÈÌ â ìíîæåñòâî çíà÷åíèé 3-çíà÷íîé ëîãèêè E3 0 1� { , , }� , ãäå 0 — ëîæü, 1 — èñòèíà, � — íåîïðåäåëåííîñòü. Ñèãíàòóðà îïåðàöèé ÑÀÀ � � �� �1 2 ñîñòîèò èç ñèñòåìû �1 ëîãè÷åñêèõ îïåðà- öèé, ïðèíèìàþùèõ çíà÷åíèÿ â ìíîæåñòâå B, è ñèñòåìû � 2 îïåðàöèé, ïðèíèìàþ- ùèõ çíà÷åíèÿ â ìíîæåñòâå îïåðàòîðîâ U.  ÑÀÀ � �U B, ; � ôèêñèðóåòñÿ ñèñòåìà îáðàçóþùèõ � , ïðåäñòàâëÿþùàÿ êîíå÷íóþ ôóíêöèîíàëüíî ïîëíóþ ñîâîêóïíîñòü îïåðàòîðîâ è ëîãè÷åñêèõ óñëîâèé. Ñ ïîìîùüþ ýòîé ñîâîêóïíîñòè ïîñðåäñòâîì ñó- ïåðïîçèöèè îïåðàöèé, âõîäÿùèõ â � , ïîðîæäàþòñÿ ïðîèçâîëüíûå îïåðàòîðû è ëî- ãè÷åñêèå óñëîâèÿ èç ìíîæåñòâ U è B . Íà ÑÀÀ áàçèðóåòñÿ àëãîðèòìè÷åñêèé ÿçûê ÑÀÀ/1 [3], èñïîëüçóåìûé äëÿ ïðî- åêòèðîâàíèÿ ïðîãðàìì â ÈÏÑ. Äàííûé ÿçûê ïðåäíàçíà÷åí äëÿ ìíîãîóðîâíåâîãî ñòðóêòóðíîãî ïðîåêòèðîâàíèÿ è äîêóìåíòèðîâàíèÿ ïîñëåäîâàòåëüíûõ è ïàðàëëåëü- íûõ àëãîðèòìîâ è ïðîãðàìì. Ïðåèìóùåñòâî åãî èñïîëüçîâàíèÿ çàêëþ÷àåòñÿ â âîç- ìîæíîñòè îïèñàíèÿ àëãîðèòìîâ â åñòåñòâåííî-ëèíãâèñòè÷åñêîé ôîðìå, óäîáíîé äëÿ ÷åëîâåêà, ÷òî îáëåã÷àåò äîñòèæåíèå òðåáóåìîãî êà÷åñòâà ïðîãðàìì. Îñíîâíû- ìè îáúåêòàìè ÿçûêà ÑÀÀ/1 ÿâëÿþòñÿ àáñòðàêöèè îïåðàòîðîâ (ïðåîáðàçîâàòåëåé äàííûõ) è óñëîâèé (ïðåäèêàòîâ). Óñëîâèÿ è îïåðàòîðû ìîãóò áûòü áàçèñíûìè èëè ñîñòàâíûìè. Áàçèñíûé îïåðàòîð (óñëîâèå) â ÑÀÀ-ñõåìå ñ÷èòàåòñÿ ïåðâè÷íîé àòî- ìàðíîé àáñòðàêöèåé. 152 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 Ñîñòàâíûå óñëîâèÿ ñòðîÿòñÿ èç áàçèñíûõ ñ ïîìîùüþ ñëåäóþùèõ ëîãè÷åñêèõ îïåðàöèé ÑÀÀ: � äèçúþíêöèÿ: ‘ ’óñëîâèå1 ÈËÈ óñëîâèå‘ ’2 ; � êîíúþíêöèÿ: ‘ ’ ‘ ’óñëîâèå È óñëîâèå1 2 ; � îòðèöàíèå: ÍÅ óñëîâèå‘ ’. Ñîñòàâíûå îïåðàòîðû ñòðîÿòñÿ èç ýëåìåíòàðíûõ ïîñðåäñòâîì îïåðàöèé ïîñëå- äîâàòåëüíîãî è ïàðàëëåëüíîãî âûïîëíåíèÿ îïåðàòîðîâ: � “ ” “ ”îïåðàòîð ÇÀÒÅÌ îïåðàòîð1 2 — ïîñëåäîâàòåëüíîå âûïîëíåíèå îïåðàòî- ðîâ; � ÅÑËÈ óñëîâèå ÒÎ îïåðàòîð‘ ’ “ ”1 1 ÈÍÀ×Å “ ”îïåðàòîð 2 ÊÎÍÅÖ ÅÑËÈ — îïåðàòîð âåòâëåíèÿ; � ÏÎÊÀ ÍÅ óñëîâèå‘ _îêîí÷àíèÿ_ ’ “ ”öèêëà ÖÈÊË îïåðàòîð ÊÎÍÅÖ ÖÈÊËÀ — îïåðàòîð öèêëà; � ÏÀÐÀËËÅËÜÍÎ îïåðàòîð(( ) ( ), ... , ( ))(“ ”)i n� 1 — àñèíõðîííîå âûïîëíåíèå n îïåðàòîðîâ (âåòâåé). Èäåíòèôèêàòîðû îïåðàòîðîâ â ÑÀÀ-ñõåìàõ çàêëþ÷àþòñÿ â äâîéíûå êàâû÷êè, à èäåíòèôèêàòîðû óñëîâèé — â îäèíàðíûå. Óðîâíè â ÑÀÀ-ñõåìàõ îïðåäåëÿþòñÿ ëåâûìè ÷àñòÿìè ðàâåíñòâ, à ñòðóêòóðà êàæäîãî óðîâíÿ êîíêðåòèçèðîâàíà (â òåðìè- íàõ ÑÀÀ) ïðàâîé ÷àñòüþ ñîîòâåòñòâóþùåãî ðàâåíñòâà. Ëåâàÿ ÷àñòü ðàâåíñòâà îòäåëÿåòñÿ îò ïðàâîé öåïî÷êîé ñèìâîëîâ � . ÈÏÑ ïðåäíàçíà÷åí äëÿ ïðîåêòèðîâàíèÿ àëãîðèòìîâ è ãåíåðàöèè ïðîãðàìì â öåëåâûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ. Ïðîåêòèðîâàíèå àëãîðèòìîâ â ÈÏÑ îñíîâàíî íà ìåòîäå äèàëîãîâîãî êîíñòðóèðîâàíèÿ ñèíòàêñè÷åñêè ïðàâèëüíûõ ïðîãðàìì (ÄÑÏ-ìåòîäå), îáåñïå÷èâàþùåì ñèíòàêñè÷åñêóþ ïðàâèëüíîñòü ñõåì [3]. Ïðè ýòîì èíñòðóìåíòàðèé èñïîëüçóåò óïîìÿíóòûå òðè ðàçëè÷íûå ôîðìû ïðåäñòàâëåíèÿ àë- ãîðèòìîâ â ïðîöåññå èõ ïðîåêòèðîâàíèÿ – åñòåñòâåííî-ëèíãâèñòè÷åñêóþ (ÑÀÀ-ñõå- ìû), àëãåáðàè÷åñêóþ (ðåãóëÿðíûå ñõåìû) è ãðàô-ñõåìíóþ. ÈÏÑ ïîääåðæèâàåò ãå- íåðàöèþ ïîñëåäîâàòåëüíûõ è ìíîãîïîòî÷íûõ ïðîãðàìì íà ÿçûêàõ Java è Ñ++, à òàêæå MPI ïðîãðàìì íà ÿçûêå C. Äëÿ èíòåãðàöèè ñ ñèñòåìîé MySHA èíñòðóìåí- òàðèé ÈÏÑ òàêæå áûë íàñòðîåí íà ãåíåðàöèþ ïðîãðàìì â ÿçûêå MySHA Ì10. Èíòåãðèðîâàííûé èíñòðóìåíòàðèé ñîäåðæèò ñëåäóþùèå êîìïîíåíòû: � ÄÑÏ-êîíñòðóêòîð, ïðåäíàçíà÷åííûé äëÿ äèàëîãîâîãî ïðîåêòèðîâàíèÿ ñèí- òàêñè÷åñêè ïðàâèëüíûõ ñõåì ïîñëåäîâàòåëüíûõ è ïàðàëëåëüíûõ àëãîðèòìîâ è ãåíå- ðàöèè ïðîãðàìì; � ðåäàêòîð ãðàô-ñõåì; � òðàíñôîðìàòîð, ïðåäíàçíà÷åííûé äëÿ èíòåðàêòèâíîãî ïðåîáðàçîâàíèÿ ñõåì àëãîðèòìîâ; � ãåíåðàòîð ÑÀÀ-ñõåì, áàçèðóþùèéñÿ íà îñíîâå ñõåì áîëåå âûñîêîãî óðîâíÿ — ãèïåðñõåì [6], ïðåäñòàâëÿþùèõ îáîáùåíèå ãðàììàòèê ñòðóêòóðíîãî ïðîåêòèðîâàíèÿ; � áàçó äàííûõ, ñîäåðæàùóþ îïèñàíèå êîíñòðóêöèé ÑÀÀ è áàçèñíûõ ïîíÿòèé â òðåõ óïîìÿíóòûõ âûøå ôîðìàõ, à òàêæå èõ ðåàëèçàöèþ íà öåëåâîì ÿçûêå ïðîãðàììèðîâàíèÿ. ÄÑÏ-êîíñòðóêòîð ïðåäíàçíà÷åí äëÿ ïîóðîâíåâîãî êîíñòðóèðîâàíèÿ ñõåì àëãî- ðèòìîâ ñâåðõó-âíèç ñ èñïîëüçîâàíèåì êîíñòðóêöèé ÑÀÀ, âûáèðàåìûõ èç ñïèñêà. Ïðîöåññ ïîñòðîåíèÿ àëãîðèòìà ñîñòîèò â ïîäñòàíîâêå óïîìÿíóòûõ êîíñòðóêöèé îäíà â äðóãóþ è èìååò âèä äåðåâà êîíñòðóèðîâàíèÿ àëãîðèòìà. Âûáðàííûå ïîëüçî- âàòåëåì êîíñòðóêöèè, à òàêæå îïåðàòîðíûå è ëîãè÷åñêèå ïåðåìåííûå, âõîäÿùèå â íèõ, îòîáðàæàþòñÿ â äåðåâå ñ äàëüíåéøåé äåòàëèçàöèåé ïåðåìåííûõ. Íà êàæäîì øàãå ïðîåêòèðîâàíèÿ ñèñòåìà â äèàëîãå ñ ïîëüçîâàòåëåì ïðåäîñòàâëÿåò íà âûáîð ëèøü òå êîíñòðóêöèè, ïîäñòàíîâêà êîòîðûõ â ôîðìèðóåìûé òåêñò íå íàðóøàåò ñèíòàêñè÷åñêîé ïðàâèëüíîñòè ñõåìû.  çàâèñèìîñòè îò òèïà âûáðàííîé ïåðåìåí- íîé (îïåðàòîðíîãî èëè ëîãè÷åñêîãî) ñèñòåìà ïðåäëàãàåò ñîîòâåòñòâóþùèé ñïèñîê îïåðàöèé èëè áàçèñíûõ ïîíÿòèé. Äàëåå äåðåâî êîíñòðóèðîâàíèÿ àëãîðèòìà èñïîëü- çóåòñÿ äëÿ ãåíåðàöèè òåêñòà ÑÀÀ-ñõåìû, ðåãóëÿðíîé ñõåìû, ãðàô-ñõåìû è êîäà â öåëåâîì ÿçûêå ïðîãðàììèðîâàíèÿ. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 153 Ïðèìåð 1. Ðàññìîòðèì ïîñëåäîâàòåëüíóþ ÑÀÀ-ñõåìó àëãîðèòìà íàõîæäåíèÿ ïðîñòûõ ÷èñåë ïî ìåòîäó ðåøåòà Ýðàòîñôåíà, ñêîíñòðóèðîâàííóþ â èíñòðóìåíòà- ðèè ÈÏÑ. ÑÕÅÌÀ PRIMES_ERATOSFEN ==== “Íàõîæäåíèå ïðîñòûõ ÷èñåë ìåòîäîì ðåøåòà Ýðàòîñôåíà” ÊÎÍÅÖ ÊÎÌÌÅÍÒÀÐÈß “ÎïðåäåëåíèåÃëîáàëüíûõÄàííûõ” ==== “Îïðåäåëèòü ìàññèâ (IS_SIMPL) òèï (bool)”; “Îïðåäåëèòü ìàññèâ (ALL_NUM ) òèï (int) ñî çíà÷åíèÿìè ([-INF, +INF])”; “Îïðåäåëèòü ìàññèâ (SIMPL_TAB) òèï (int)” “program” ==== “Óñòàíîâèòü âñå ýëåìåíòû ìàññèâà (IS_SIMPL) â çíà÷åíèå (true)” ÇÀÒÅÌ “Ïðî÷èòàòü öåëîå (MAX)” ÇÀÒÅÌ ÄËß ‘(cnt) îò (1) äî (+INF) ñ øàãîì (2)’ ÖÈÊË ÅÑËÈ ‘(IS_SIMPL[cnt]) = (true)’ ÒÎ ÄËß ‘(scnt) îò (1) äî (+INF)’ ÖÈÊË ÅÑËÈ ‘(cnt * scnt) > (MAX)’ ÒÎ “Ïåðåéòè ê ìåòêå (FINISH)” ÊÎÍÅÖ ÅÑËÈ ÇÀÒÅÌ “(IS_SIMPL[cnt * scnt]) := (false)” ÊÎÍÅÖ ÖÈÊËÀ ÊÎÍÅÖ ÅÑËÈ ÊÎÍÅÖ ÖÈÊËÀ ÇÀÒÅÌ “Ìåòêà (FINISH)” ÇÀÒÅÌ (SIMPLE_TAB := “Âûáðàòü çíà÷åíèÿ èç ìàññèâà (ALL_NUM) â ñîîòâåòñòâèè ñ ìàñêîé (IS_SIMPL)") ÇÀÒÅÌ “Âîçâðàòèòü çíà÷åíèå (SIMPL_TAB)” ÊÎÍÅÖ ÑÕÅÌÛ PRIMES_ERATOSFEN Äëÿ äàëüíåéøåãî ïðåîáðàçîâàíèÿ ïðîãðàìì, ñêîíñòðóèðîâàííûõ â ÈÏÑ ñ öåëüþ èõ íàñòðîéêè íà ïëàòôîðìó è îïòèìèçàöèè, èñïîëüçóåòñÿ ñèñòåìà MySHA. 2. ÐÀÇÐÀÁÎÒÊÀ ÏÐÎÃÐÀÌÌ Ñ ÈÑÏÎËÜÇÎÂÀÍÈÅÌ ÏËÀÒÔÎÐÌÛ MYSHA .Ðàññìîòðèì ðåçóëüòàòû ðàñïàðàëëåëèâàíèÿ ïðèâåäåííîãî àëãîðèòìà íàõîæäåíèÿ ïðîñòûõ ÷èñåë äëÿ âûïîëíåíèÿ íà ìíîãîÿäåðíîé ïðîöåññîðíîé àðõèòåêòóðå. Ñèñòåìà MySHA — ìíîãîÿçû÷íàÿ êðîññ-ïëàòôîðìåííàÿ òåõíîëîãèÿ, êîòîðàÿ äàåò âîçìîæíîñòü èíòåãðèðîâàòü êîìïîíåíòû, ñîçäàííûå ñ èñïîëüçîâàíèåì ÿçû- êîâ ïðîãðàììèðîâàíèÿ ñ ðàçíûìè ïàðàäèãìàìè (èìïåðàòèâíàÿ è äåêëàðàòèâíàÿ) äëÿ ðåàëèçàöèè ñëîæíûõ íàó÷íî-èññëåäîâàòåëüñêèõ ïðîåêòîâ [8]. Ïëàòôîðìà MySHA ñîñòîèò èç ñëåäóþùèõ ýëåìåíòîâ: 154 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 � îïåðàöèîííîé ñèñòåìû ðåàëüíîãî âðåìåíè, êîòîðàÿ ìîæåò èñïîëüçîâàòüñÿ äëÿ âûïîëíåíèÿ ïðîãðàìì íà îñíîâå ïëàòôîðìû MySHA; � ñðåäñòâ âûïîëíåíèÿ MySHA-ïðîãðàìì íà ãðàôè÷åñêèõ àêñåëåðàòîðàõ AMD; � òåõíîëîãèè Universal Binary, îáåñïå÷èâàþùåé âûïîëíåíèå ïðîãðàììû â îðèãèíàëüíîì ìàøèííîì êîäå áåç èñïîëüçîâàíèÿ èíòåðïðåòàöèè/JIT-êîìïèëÿöèè ïðîìåæóòî÷íîãî êîäà; � óíèâåðñàëüíîé ñèñòåìû òèïîâ äàííûõ, îïòèìèçèðîâàííîé äëÿ íàó÷íûõ èñ- ñëåäîâàíèé; � âûñîêîóðîâíåâîãî ïðîìåæóòî÷íîãî óíèâåðñàëüíîãî ÿçûêà ïðîãðàììèðîâàíèÿ; � òåõíîëîãèè ðàñïàðàëëåëèâàíèÿ è îïòèìèçàöèè ïðîãðàìì äëÿ ìíîãîïîòî÷íî- ãî âûïîëíåíèÿ; � ñðåäñòâ ðàçðàáîòêè ïðîãðàìì è èõ ðàçâåðòûâàíèÿ íà êëàñòåðíûõ ñèñòåìàõ; � ïîäñèñòåìû óïðàâëåíèÿ ïàìÿòüþ íà îñíîâå èñïîëüçîâàíèÿ ñèìâîëüíûõ èìåí; � àâòîìàòè÷åñêîé ïîäñèñòåìû óïðàâëåíèÿ äèíàìè÷åñêîé ïàìÿòüþ íà îñíîâå ìãíîâåííîãî îñâîáîæäåíèÿ ïàìÿòè, ãàðàíòèðóþùåãî ìèíèìàëüíûé îáúåì èñïîëü- çîâàíèÿ ïàìÿòè è îòñóòñòâèå îáúåêòîâ áåç ññûëîê â ëþáîé ìîìåíò âðåìåíè. (Ôèíà- ëèçàöèÿ îáúåêòîâ â ñèñòåìå MySHA ïðåäñòàâëÿåò äåòåðìèíèðîâàííûé ïðîöåññ â îòëè÷èå îò ôèíàëèçàöèè â .NET è Java.) Èäåîëîãèÿ ñîçäàíèÿ ïðîãðàììíûõ ñèñòåì íà áàçå ïëàòôîðìû MySHA ïîëó÷è- ëà íàçâàíèå àëãîðèòìè÷åñêè-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ (ÀÎÏ), êîòîðîå èìååò ìíîãî îáùåãî ñ àëãåáðîàëãîðèòìè÷åñêèì ïîäõîäîì ê ïðîåêòèðîâàíèþ àëãî- ðèòìîâ, ðàññìîòðåííûì â ðàçä. 1. ÀÎÏ äàåò âîçìîæíîñòü èñïîëüçîâàòü â ëþáîé ñè- òóàöèè îïòèìàëüíûé ïîäõîä ê ïðîåêòèðîâàíèþ ñèñòåìû èëè îòäåëüíîãî àëãîðèò- ìà. Òàê, íàïðèìåð, ìîæíî îáúåäèíÿòü òðàäèöèîííóþ ñòðóêòóðíóþ ìîäåëü ÿçûêà Ïàñêàëü, îáúåêòíî-îðèåíòèðîâàííóþ ìîäåëü â ñòèëå .NET, òåõíîëîãèþ ñòðóêòóðè- ðîâàíèÿ äàííûõ MySHA, à òàêæå ýâðèñòè÷åñêèå ìåòîäû è äåêëàðàòèâíîå ïðîãðàì- ìèðîâàíèå. Âàæíûì ïðåèìóùåñòâîì ïëàòôîðìû MySHA ÿâëÿåòñÿ âûñîêîýôôåêòèâíàÿ ðå- àëèçàöèÿ áèáëèîòåê è òðàíñëÿòîðà. Òàê, áèáëèîòåêè äëÿ ÝÂÌ àðõèòåêòóð õ86, AMD FireStream è ÌÏ ðåàëèçîâàíû íà ÿçûêå Àññåìáëåð. Òðàíñëÿòîð äëÿ ïëàòôîð- ìû MySHA ÿâëÿåòñÿ òðåõóðîâíåâîé ñèñòåìîé, êîòîðàÿ îáåñïå÷èâàåò âûñîêèé óðî- âåíü òåõíîëîãè÷åñêîé ñîâìåñòèìîñòè è âîçìîæíîñòü ñîçäàíèÿ íîâûõ òðàíñëÿòîðîâ äëÿ ìíîãèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ. Òåõíîëîãè÷åñêè íà âñåõ óðîâíÿõ òðàíñëÿòîð ðåàëèçîâàí êàê èíòåëëåêòóàëüíàÿ íåéðîííàÿ ñåòü ñ èñïîëüçîâàíèåì äèíàìè÷åñêè ãåíåðèðóåìûõ ïðîöåäóð è ýâðèñòèê. Òðàíñëÿòîð ïðåäîñòàâëÿåò ñðåäñòâà ïðîôèëè- ðîâàíèÿ è èíòåëëåêòóàëüíîé îïòèìèçàöèè ïðîãðàììíîãî êîäà íà óðîâíå èñõîäíûõ òåêñòîâ è àññåìáëåðíîãî êîäà. Âàæíûì ñâîéñòâîì òðàíñëÿòîðà ÿâëÿåòñÿ âîçìîæ- íîñòü ïðîãðàììíûõ ñèñòåì äèíàìè÷åñêè èçìåíÿòü ñîáñòâåííûé âûñîêîóðîâíåâûé êîä; áëàãîäàðÿ ýòîìó ïîÿâëÿþòñÿ øèðîêèå âîçìîæíîñòè äëÿ ñîçäàíèÿ èíòåëëåêòó- àëüíûõ ïðîãðàììíûõ êîìïëåêñîâ. Îñíîâó ðàçðàáîòàííîé âåðñèè ÿçûêà MySHA ñîñòàâëÿåò ÿçûê ïðîãðàììèðîâà- íèÿ Ïàñêàëü. Çíà÷èòåëüíàÿ ÷àñòü ýëåìåíòîâ ÿçûêà MySHA çàèìñòâîâàíà èç Àëãîëà, Ëèñïà è Ñè. Ôàéë ïðîãðàììû íà ÿçûêå MySHA ñîñòîèò èç äâóõ ÷àñòåé: çîíû îáúÿâ- ëåíèé è çîíû îïèñàíèÿ ãëàâíîãî òåëà ïðîãðàììû.  çîíå îáúÿâëåíèé îïèñûâàþòñÿ ïîäïðîãðàììû, ìîäóëè, òèïû. Ñ ãëàâíîãî òåëà ïðîãðàììû íà÷èíàåòñÿ è çàêàí÷èâà- åòñÿ åå âûïîëíåíèå. Ïðîãðàììà íàõîæäåíèÿ ïðîñòûõ ÷èñåë, èñïîëüçóþùàÿ ìåòîä ðåøåòà Ýðàòîñôåíà, ìîæåò áûòü ïðåäñòàâëåíà ÿçûêîì MySHA M10 ñëåäóþùèì îá- ðàçîì: // Îáúÿâëåíèå äàííûõ ar<bool> IS_SIMPL; // Ìàññèâ áóëåâûõ çíà÷åíèé // Ìàññèâ öåëûõ ÷èñåë çàïîëíÿåòñÿ çíà÷åíèÿìè ar<int> ALL_NUM = $R<int>([-INF, +INF]); ar<int> SIMPL_TAB; // Ìàññèâ öåëûõ ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 155 // Ãëàâíîå òåëî ïðîãðàììû program { IS_SIMPL.SetAll(true); int MAX = Console.ReadLn(“Enter MAX value”).ToInt(); forcnt(cnt, 1, +INF, step 2) if(IS_SIMPL[scnt]==true) forcnt(scnt, 1, +INF) { if(cnt*scnt>MAX) goto FINISH; IS_SIMPL[cnt*scnt] = false; } label(FINISH); SIMPL_TAB = ALL_NUM.SelectByBoolMask(IS_SIMPL); return SIMPL_TAB; } ßçûê MySHA ïðåäëàãàåò ìíîãî ñðåäñòâ ïðîãðàììèðîâàíèÿ àëãîðèòìîâ. Òàê, ê òðàäèöèîííîé èìïåðàòèâíîé ìîäåëè (ïîäïðîãðàììû è ðóêîâîäÿùèå êîíñòðóêöèè ÿçûêà Ïàñêàëü) äîáàâëåíî óïðàâëåíèå ïàìÿòüþ ñ ïîìîùüþ ñèìâîëüíûõ èìåí (â MySHA êàæäàÿ ïåðåìåííàÿ ìîæåò èìåòü ñèìâîëüíîå èìÿ), ýâðèñòè÷åñêîå è äåê- ëàðàòèâíîå ïðîãðàììèðîâàíèå. Ýâðèñòèêîé ÿâëÿåòñÿ ïðîãðàììà èëè ïîäïðîãðàì- ìà, êîòîðàÿ ìîæåò îïòèìèçèðîâàòü ñâîå ïîâåäåíèå íà îñíîâå ðàñ÷åòà îïòèìàëüíîé ñòðàòåãèè ïóòåì èçìåíåíèÿ ïàðàìåòðîâ-êîíñòàíò, çàëîæåííûõ â ñâîåì àëãîðèòìå, è íà îñíîâå ïîäáîðà îïòèìàëüíûõ ðåøåíèé, âõîäíûõ äàííûõ è ðåçóëüòàòîâ. Ñ ïî- ìîùüþ ýâðèñòèê ðåàëèçóþòñÿ ñðåäñòâà èíòåëëåêòóàëèçàöèè ïðè ãåíåðàöèè êîäà è åãî âûïîëíåíèè (â ÷àñòíîñòè, ñðåäñòâà ñ íå÷åòêîé ëîãèêîé), ïðåäóñìàòðèâàþùèå: � ðåôëåêñèþ MySHA-ïðîãðàììû äëÿ ïåðåñòðîéêè ðåñóðñîåìêèõ áàçîâûõ àë- ãîðèòìîâ; � ðåôëåêñèþ è äèíàìè÷åñêîå ãåíåðèðîâàíèå ýâðèñòèê äëÿ ïîñòðîåíèÿ èíòåë- ëåêòóàëüíûõ ñèñòåì íà îñíîâå íåéðîííûõ ñåòåé è ýâðèñòè÷åñêèõ àëãîðèòìîâ; � ñèíòàêñè÷åñêèå êîíñòðóêöèè è òåõíîëîãèè äëÿ îïèñàíèÿ è õðàíåíèÿ çíàíèé. 3. ÃÅÍÅÐÀÖÈß ÂÛÑÎÊÎÏÐÎÄÓÊÒÈÂÍÛÕ ÏÐÎÃÐÀÌÌ Òðàíñëÿòîð ñèñòåìû MySHA ãåíåðèðóåò ýôôåêòèâíûé àññåìáëåðíûé êîä. Èñ- ïîëüçîâàíèå òåõíîëîãèè ïëàòôîðìåííîãî ïîñòðîåíèÿ äàåò âîçìîæíîñòü ñîçäàâàòü ïðîãðàììíûå ñðåäñòâà, íå çàâèñèìûå îò òèïà àïïàðàòíîãî îáåñïå÷åíèÿ, à òàêæå èññëåäîâàòü ïðåèìóùåñòâà è íåäîñòàòêè ðàçëè÷íûõ ïðîöåññîðíûõ àðõèòåêòóð äëÿ ðàçëè÷íûõ òèïîâ çàäà÷. MySHA ñîäåðæèò êà÷åñòâåííóþ ñèñòåìó èçìåðåíèÿ ïðîèçâîäèòåëüíîñòè ïðîãðàììû, ïîçâîëÿþùóþ îïðåäåëèòü ñêîðîñòü ïðîãðàììû â öåëîì è åå îòäåëüíûõ ÷àñòåé, à òàêæå ïîêàçàòåëü èñïîëüçîâàíèÿ ÎÇÓ. Ñèñòåìà èçìåðåíèÿ ïðîèçâîäèòåëüíîñòè èíòåãðèðîâàíà ñ òðàíñëÿòîðîì, êîòîðûé èñïîëü- çóåò äàííûå ñèñòåìû â ðåæèìå ñàìîîáó÷åíèÿ äëÿ îïðåäåëåíèÿ íàèëó÷øåé îïòè- ìèçàöèîííîé ñòðàòåãèè. Ñ öåëüþ îïòèìèçàöèè òðàíñëÿòîð èñïîëüçóåò òðè íàáîðà äèíàìè÷åñêèõ ýâðèñòèê, ïîçâîëÿþùèõ: � îïðåäåëÿòü «óçêèå ìåñòà» ïðîãðàììû è ñðàâíèâàòü ïðîèçâîäèòåëüíîñòü ðàç- íûõ âàðèàíòîâ îäíîãî ôðàãìåíòà êîäà íà ÿçûêå MySHA (îñíîâíûå àíàëèòè÷åñêèå ýâðèñòèêè); � ãåíåðèðîâàòü ïðîãðàììó íà Àññåìáëåðå â êîäå ïðîöåññîðà; � óêàçàòü ïàðàëëåëüíûå ôðàãìåíòû ïðîãðàììû äëÿ ñèíõðîíèçèðîâàííîãî âû- ïîëíåíèÿ íà ïðîöåññîðå ñ øèðîêèì êîìàíäíûì ñëîâîì; � âûïîëíÿòü âûáîðêó êîðîòêèõ ïîñëåäîâàòåëüíîñòåé è ñîðòèðîâêó êîìàíä ñ öåëüþ îïòèìèçàöèè ïðîãðàììû äëÿ ñóïåðñêàëÿðíûõ àðõèòåêòóð (ïîääåðæèâàþò- ñÿ ìîäåëè SIMD, CISC è EPIC, à òàêæå íàáîðû èíñòðóêöèé MMX, SSE, SSE2, 3DNOW, AMD64, EM64T, PHC è ò.ï.); 156 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 � îñóùåñòâëÿòü ðàñïàðàëëåëèâàíèå âûñîêîóðîâíåâîãî ïðîãðàììíîãî êîäà íà äîñòàòî÷íî áîëüøèå àâòîíîìíûå áëîêè ñ öåëüþ óìåíüøåíèÿ íàêëàäíûõ ðàñõîäîâ íà ïåðåäà÷ó ñîîáùåíèé ìåæäó ïðîöåññàìè; � ðàñïðåäåëÿòü äàííûå ìåæäó ïîòîêàìè è ïîäðàçäåëÿòü ïîäïðîãðàììû â îò- äåëüíûå ôóíêöèè, âûïîëíÿåìûå îòäåëüíûìè ïîòîêàìè; � îñóùåñòâëÿòü îïòèìèçàöèþ ïàìÿòè çà ñ÷åò íåÿâíîãî èñïîëüçîâàíèÿ ïåðåäà- ÷è óêàçàòåëÿ íà ñòðóêòóðó äàííûõ âìåñòî ïåðåäà÷è ñîáñòâåííî ñòðóêòóðû; � âûïîëíÿòü îïòèìèçàöèþ ïàìÿòè çà ñ÷åò ïîñòðîåíèÿ ñïåöèàëèçèðîâàííûõ ýâ- ðèñòèê î÷èñòêè äèíàìè÷åñêîé ïàìÿòè. Ýòà ìåòîäèêà äàåò âîçìîæíîñòü èçáåãàòü òðàäèöèîííûõ íåäîñòàòêîâ òåõíîëîãèè îñâîáîæäåíèÿ ïàìÿòè. Ñ öåëüþ èññëåäîâàíèÿ ñîâìåñòíîãî èñïîëüçîâàíèÿ ñèñòåìû MySHA è ÈÏÑ áûë ïðîâåäåí ýêñïåðèìåíò, â êîòîðîì ÈÏÑ áûë íàñòðîåí íà ãåíåðàöèþ ïðîãðàìì íà ÿçûêå MySHA M10. Ñãåíåðèðîâàííûå òàêèì îáðàçîì ïðîãðàììû ïåðåäàþòñÿ íà âõîä ñèñòåìû MySHA, êîòîðàÿ îñóùåñòâëÿåò íåîáõîäèìóþ òðàíñôîðìàöèþ äëÿ îïòèìèçàöèè è ïàðàëëåëèçàöèè ïðîãðàìì. Ñïåöèàëüíûé íàáîð òåñòîâ íàó÷íûõ çàäà÷ áûë èñïîëüçîâàí äëÿ îïðåäåëåíèÿ ðåàëüíîé ïðîèçâîäèòåëüíîñòè MySHA â êëàñòåðíîé ñèñòåìå, èìåþùåé ñëåäóþ- ùóþ êîíôèãóðàöèþ: � 9: Intel Celeron 3,06 Ghz (512 K L2 cache), 248 MB RAM; � 2: Intel Celeron 1,7 Ghz (128 K L2 cache). 128 MB RAM; � 1: Intel Core 2 Duo E6400, 2 GB RAM; � 8: Intel Celeron 533 MHz (128 K L2 cache), 64 MB RAM; � 1: AMD Athlon 64 X2 4800+, 8 GB RAM; � 1: Mobile AMD Turion 64 X2 MT-62, 2 GB RAM. Òàêèì îáðàçîì, êëàñòåðíàÿ ñèñòåìà èìååò 22 óçëà êëàñòåðà, 25 ïðîöåññîðîâ, 20 âû÷èñëèòåëüíûõ óçëîâ, 2 óïðàâëÿþùèõ óçëà. Ïðèìåð 2. Ðàññìîòðèì ðåçóëüòàò ðàñïàðàëëåëèâàíèÿ ïðîãðàììû íàõîæäåíèÿ ïðîñòûõ ÷èñåë, ñãåíåðèðîâàííîé â èíòåãðèðîâàííîì èíñòðóìåíòàðèè (ñì. ïðèìåð 1).  ñèñòåìå MySHA áûëî ðàñïàðàëëåëåíî òåëî êîíñòðóêöèè IF óïîìÿíóòîé ïðîãðàì- ìû. Ïðåäñòàâèì èñõîäíóþ êîíñòðóêöèþ â ÿçûêå MySHA Ì10 ñëåäóþùèì îáðàçîì: if (IS_SIMPL[cnt] == true) { forcnt(scnt, 1, +INF) { <FOR_LOOP_BODY> } }  ðåçóëüòàòå ðàñïàðàëëåëèâàíèÿ â ñèñòåìå MySHA âìåñòî ïðèâåäåííîé âûøå êîíñòðóêöèè â ïðîãðàììå äàí ñëåäóþùèé òåêñò: ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 157 if(IS_SIMPL[cnt] == true) { branch(X000) { forcnt(scnt, 1, +INF, step 2) { <FOR_LOOP_BODY> } } branch(X001) { forcnt(scnt, 2, +INF, step 2) {  ðàññìîòðåííîì ôðàãìåíòå òåëî êîíñòðóêöèè IF (êîòîðûì ÿâëÿåòñÿ öèêë for ), ðàçäåëåíî íà äâà öèêëà, êîòîðûå âûïîëíÿþòñÿ äâóìÿ ïîòîêàìè. Ïàðàìåòðû öèêëîâ áûëè óñòàíîâëåíû òàêèì îáðàçîì, ÷òîáû ïîòîêè îáðàáàòûâàëè íåçàâèñè- ìûå ôðàãìåíòû ìàññèâà IS_SIMPL . Òåëî öèêëîâ for â ñðàâíåíèè ñ ïîñëåäîâà- òåëüíûì âàðèàíòîì îñòàëîñü áåç èçìåíåíèé. Áûëè ïîëó÷åíû ðåçóëüòàòû âûïîëíåíèÿ ðàñïàðàëëåëåííîé â ñèñòåìå MySHA ïðîãðàììû íàõîæäåíèÿ ïðîñòûõ ÷èñåë, êîòîðûå ñðàâíèâàëèñü ñ ðåçóëüòàòàìè âû- ïîëíåíèÿ ïðîãðàììû, ðåàëèçîâàííîé âðó÷íóþ íà äðóãèõ ïëàòôîðìàõ. Òàêèì îáðàçîì, ñðåäíåå êîëè÷åñòâî íàéäåííûõ ïðîñòûõ ÷èñåë (â ñåêóíäó) äëÿ ðàçëè÷íûõ ïðîãðàììíûõ ïëàòôîðì ñîñòàâëÿþò 590 000 äëÿ ÿçûêà MySHA Ì10 (àâ- òîìàòèçèðîâàííîå ðàñïàðàëëåëèâàíèå), 475 000 äëÿ Ñ++ ñ èñïîëüçîâàíèåì MPI 1.1 (ðó÷íîå ðàñïàðàëëåëèâàíèå), 273 000 äëÿ .NET (C#) (ðó÷íîå ðàñïàðàëëåëèâàíèå), 191000 äëÿ ÿçûêà Java (ðó÷íîå ðàñïàðàëëåëèâàíèå). Âî âñåõ ñëó÷àÿõ âû÷èñëÿëèñü ïåðâûå 1010 ïðîñòûõ ÷èñåë è èñïîëüçîâàëîñü 18 ïîòîêîâ. ÇÀÊËÞ×ÅÍÈÅ Â íàñòîÿùåé ñòàòüå ïîêàçàíî ðàçâèòèå èíñòðóìåíòàðèÿ äëÿ ðàçðàáîòêè ïàðàëëåëü- íûõ àëãîðèòìîâ íà îñíîâå èíòåãðàöèè àëãåáðîàëãîðèòìè÷åñêèõ ñðåäñòâ è ñàìîîáó- ÷àþùèõñÿ ìåòîäîâ òðàíñëÿöèè. ÈÏÑ îáåñïå÷èâàåò ôîðìàëèçîâàííûå äèàëîãîâûå ñðåäñòâà êîíñòðóèðîâàíèÿ ïðîãðàìì, õàðàêòåðíûì äëÿ íèõ ÿâëÿþòñÿ ïðîñòîòà â îáó÷åíèè è èñïîëüçîâàíèè, à òàêæå íåçàâèñèìîñòü îò ÿçûêà ïðîãðàììèðîâàíèÿ è âîçìîæíîñòü ïåðåâåäåíèÿ â ïðîèçâîëüíûé öåëåâîé ÿçûê. Âûïîëíåíà íàñòðîéêà àëãåáðîàëãîðèòìè÷åñêîãî èíñòðóìåíòàðèÿ íà ãåíåðàöèþ êîäà â ÿçûêå MySHA M10, ÷òî ïîçâîëÿåò âûïîëíÿòü äàëüíåéøåå àâòîìàòèçèðîâàííîå ïðåîáðàçîâàíèå ïðîãðàìì â ñèñòåìå MySHA, â ÷àñòíîñòè îñóùåñòâëÿòü èõ ðàñïàðàëëåëèâàíèå. Ïðåèìóùåñ- òâîì ñèñòåìû MySHA â ñðàâíåíèè ñ ðàçðàáîòàííûìè ðàíåå äëÿ ÈÏÑ ñðåäñòâàìè òðàíñôîðìàöèè ïðîãðàìì (áàçèðóþùèìèñÿ íà àëãåáðàè÷åñêèõ ðàâåíñòâàõ) ÿâëÿåòñÿ èñïîëüçîâàíèå ýâðèñòèê è ñàìîîáó÷åíèå. Ðåçóëüòàòû ýêñïåðèìåíòà ïîêàçàëè, ÷òî ïðîãðàììû, ðåàëèçîâàííûå íà ïëàòôîðìå MySHA ñ èñïîëüçîâàíèåì ýâðèñòè÷åñêèõ òåõíîëîãèé, èìåþò áîëüøóþ ïðîäóêòèâíîñòü â ñðàâíåíèè ñ ïðîãðàììàìè, ðàçðàáî- òàííûìè äëÿ äðóãèõ ïëàòôîðì (C++, .NET, J2EE). ÑÏÈÑÎÊ ËÈÒÅÐÀÒÓÐÛ 1. A l g e b r a i c methodology to software technology, http://www.amast.org 2. Í î ä å í Ï . , Ê è ò ò å Ê . Àëãåáðàè÷åñêàÿ àëãîðèòìèêà. — Ì.: Ìèð, 1999. — 720 ñ. 3. À í ä î í Ô . È . , Ä î ð î ø å í ê î À . Å . , Ö å é ò ë è í à . Å . , ß ö å í ê î Å . À . Àëãåáðîàëãîðèòìè÷åñ- êèå ìîäåëè è ìåòîäû ïàðàëëåëüíîãî ïðîãðàììèðîâàíèÿ. — Êèåâ: Àêàäåìïåðèîäèêà, 2007. — 631 ñ. 4. à ë ó ø ê î â  . Ì . , Ö å é ò ë è í à . Å . , Þ ù å í ê î Å . Ë . Àëãåáðà. ßçûêè. Ïðîãðàììèðîâàíèå. — 3-å èçä. — Ê.: Íàóê. äóìêà, 1989. — 376 ñ. 5. × à ð í å ö ê è Ê . , À é ç å í å ê å ð Ó . Ïîðîæäàþùåå ïðîãðàììèðîâàíèå: ìåòîäû, èíñòðóìåíòû, ïðèìåíåíèå. — ÑÏá.: Ïèòåð, 2005. — 731 ñ. 6. Y a t s e n k o O . A . Algebras of hyperschemes and integrated tools for synthesis of programs in modern ob- ject-oriented environments // Cybernetics and Systems Analysis. — 2004. — 40, N 1. — P. 38–42. 7. Ä î ð î ø å í ê î À . Å . , Æ å ð å á Ê . À . , ß ö å í ê î Å . À . Ôîðìàëèçîâàííîå ïðîåêòèðîâàíèå ýôôåê- òèâíûõ ìíîãîïîòî÷íûõ ïðîãðàìì // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2007. — ¹ 1. — Ñ. 17–30. 8. Ä î ð î ø å í ê î À . Þ . , Ê î ò þ ê Ì .  . , Í ³ ê î ë à º â Ñ . Ñ . Ïðîãðàìíà ïëàòôîðìà äëÿ íàóêîâèõ äîñë³äæåíü // Òàì æå. — 2007. — ¹ 4. — Ñ. 49–59. 9. D o r o s h e n k o A . , T s e y t l i n G . , Y a t s e n k o O . , Z a c h a r i y a L . A theory of clones and formali- zed design of programs // Proc. Int. Conf. «Concurrency, Specification, and Programming», 2006. — P. 328–339. Ïîñòóïèëà 30.04.2009 158 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 <FOR_LOOP_BODY> } } launch(ar<branch>() << X000 << X001); meet(ar<branch>() << X000 << X001); }