Automated program design for solution of weather forecasting problem

The facilities for automated design of parallel code for OpenMP environment on the basis of highlevel algebra-algorithmic specifications are developed. The application of the facilities is illustrated on an example of a problem of atmosphere circulation modeling, which is represented as a service, b...

Повний опис

Збережено в:
Бібліографічні деталі
Дата:2018
Автори: Doroshenko, A.Yu., Ivanenko, P.A., Ovdiy, O.M., Yatsenko, O.A.
Формат: Стаття
Мова:Ukrainian
Опубліковано: PROBLEMS IN PROGRAMMING 2018
Теми:
Онлайн доступ:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/171
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Репозитарії

Problems in programming
id pp_isofts_kiev_ua-article-171
record_format ojs
resource_txt_mv ppisoftskievua/20/5434c5d859932d9156360e89d3552320.pdf
spelling pp_isofts_kiev_ua-article-1712025-11-16T14:46:27Z Automated program design for solution of weather forecasting problem Автоматизированное проектирова-ние программ для решения задачи метеорологического прогнозирования Автоматизоване проектування програм для розв’язання задачі метеорологічного прогнозування Doroshenko, A.Yu. Ivanenko, P.A. Ovdiy, O.M. Yatsenko, O.A. parallel computing; meteoro-logical forecasting; software synthesis; algorithms algebra; web portal UDC 681.3 параллельные вычисления; метеорологическое прогнозирование; синтез программ; алгебра алгоритмов; Интернет-портал УДК 681.3 паралельні обчислення; метеорологічне прогнозування; синтез програм; алгебра алгоритмів; Інтернет-портал УДК 681.3 The facilities for automated design of parallel code for OpenMP environment on the basis of highlevel algebra-algorithmic specifications are developed. The application of the facilities is illustrated on an example of a problem of atmosphere circulation modeling, which is represented as a service, belonging to the Internet-portal for providing meteorolog-ical forecasting services. The generation of program code was implemented and the results of the conducted experiment, which consisted in execution of the developed parallel weather forecasting pro-gram on a multiprocessor platform, are given.Prombles in programming 2016; 1: 102-115 Разработано средство автоматизированного конструирования параллельного кода для среды OpenMP на основе высокоуровневых алгебро-алгоритмических спецификаций. Применение средства демонстрируется на примере задачи моделирования циркуляции атмосферы, представленном как сервис в составе Интернет-портала для предоставления услуг метеопрогноза. Осуществлена генерация программного кода и приведены результаты эксперимента по выполнению разработанной параллельной программы прогнозирования на мультипроцессорной платформе.Prombles in programming 2016; 1: 102-115 Розроблено засіб автоматизованого конструювання паралельного коду для середовища OpenMP на основі високорівневих алгебро-алгоритмічних специфікацій. Застосування засобу демонструється на прикладі задачі моделювання циркуляції атмосфери, що представлений як сервіс у складі Інтернет-порталу з надання послуг метеопрогнозу. Здійснена генерація програмного коду та наведено результати експерименту з виконання розробленої паралельної програми прогнозування на мультипроцесорній платформі.Prombles in programming 2016; 1: 102-115 PROBLEMS IN PROGRAMMING ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПРОБЛЕМИ ПРОГРАМУВАННЯ 2018-11-21 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/171 10.15407/pp2016.01.102 PROBLEMS IN PROGRAMMING; No 1 (2016); 102-115 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 1 (2016); 102-115 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 1 (2016); 102-115 1727-4907 10.15407/pp2016.01 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/171/166 Copyright (c) 2017 ПРОБЛЕМИ ПРОГРАМУВАННЯ
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2025-11-16T14:46:27Z
collection OJS
language Ukrainian
topic parallel computing
meteoro-logical forecasting
software synthesis
algorithms algebra
web portal
UDC 681.3
spellingShingle parallel computing
meteoro-logical forecasting
software synthesis
algorithms algebra
web portal
UDC 681.3
Doroshenko, A.Yu.
Ivanenko, P.A.
Ovdiy, O.M.
Yatsenko, O.A.
Automated program design for solution of weather forecasting problem
topic_facet parallel computing
meteoro-logical forecasting
software synthesis
algorithms algebra
web portal
UDC 681.3
параллельные вычисления
метеорологическое прогнозирование
синтез программ
алгебра алгоритмов
Интернет-портал
УДК 681.3
паралельні обчислення
метеорологічне прогнозування
синтез програм
алгебра алгоритмів
Інтернет-портал
УДК 681.3
format Article
author Doroshenko, A.Yu.
Ivanenko, P.A.
Ovdiy, O.M.
Yatsenko, O.A.
author_facet Doroshenko, A.Yu.
Ivanenko, P.A.
Ovdiy, O.M.
Yatsenko, O.A.
author_sort Doroshenko, A.Yu.
title Automated program design for solution of weather forecasting problem
title_short Automated program design for solution of weather forecasting problem
title_full Automated program design for solution of weather forecasting problem
title_fullStr Automated program design for solution of weather forecasting problem
title_full_unstemmed Automated program design for solution of weather forecasting problem
title_sort automated program design for solution of weather forecasting problem
title_alt Автоматизированное проектирова-ние программ для решения задачи метеорологического прогнозирования
Автоматизоване проектування програм для розв’язання задачі метеорологічного прогнозування
description The facilities for automated design of parallel code for OpenMP environment on the basis of highlevel algebra-algorithmic specifications are developed. The application of the facilities is illustrated on an example of a problem of atmosphere circulation modeling, which is represented as a service, belonging to the Internet-portal for providing meteorolog-ical forecasting services. The generation of program code was implemented and the results of the conducted experiment, which consisted in execution of the developed parallel weather forecasting pro-gram on a multiprocessor platform, are given.Prombles in programming 2016; 1: 102-115
publisher PROBLEMS IN PROGRAMMING
publishDate 2018
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/171
work_keys_str_mv AT doroshenkoayu automatedprogramdesignforsolutionofweatherforecastingproblem
AT ivanenkopa automatedprogramdesignforsolutionofweatherforecastingproblem
AT ovdiyom automatedprogramdesignforsolutionofweatherforecastingproblem
AT yatsenkooa automatedprogramdesignforsolutionofweatherforecastingproblem
AT doroshenkoayu avtomatizirovannoeproektirovanieprogrammdlârešeniâzadačimeteorologičeskogoprognozirovaniâ
AT ivanenkopa avtomatizirovannoeproektirovanieprogrammdlârešeniâzadačimeteorologičeskogoprognozirovaniâ
AT ovdiyom avtomatizirovannoeproektirovanieprogrammdlârešeniâzadačimeteorologičeskogoprognozirovaniâ
AT yatsenkooa avtomatizirovannoeproektirovanieprogrammdlârešeniâzadačimeteorologičeskogoprognozirovaniâ
AT doroshenkoayu avtomatizovaneproektuvannâprogramdlârozvâzannâzadačímeteorologíčnogoprognozuvannâ
AT ivanenkopa avtomatizovaneproektuvannâprogramdlârozvâzannâzadačímeteorologíčnogoprognozuvannâ
AT ovdiyom avtomatizovaneproektuvannâprogramdlârozvâzannâzadačímeteorologíčnogoprognozuvannâ
AT yatsenkooa avtomatizovaneproektuvannâprogramdlârozvâzannâzadačímeteorologíčnogoprognozuvannâ
first_indexed 2025-07-17T09:54:31Z
last_indexed 2025-11-17T02:17:35Z
_version_ 1850410492123676672
fulltext Прикладні засоби програмування та програмне забезпечення © А.Ю. Дорошенко, П.А. Іваненко, О.М. Овдій, О.А. Яценко, 2016 102 ISSN 1727-4907. Проблеми програмування. 2016. № 1 УДК 681.3 А.Ю. Дорошенко, П.А. Іваненко, О.М. Овдій, О.А. Яценко АВТОМАТИЗОВАНЕ ПРОЕКТУВАННЯ ПРОГРАМ ДЛЯ РОЗВ’ЯЗАННЯ ЗАДАЧІ МЕТЕОРОЛОГІЧНОГО ПРОГНОЗУВАННЯ Розроблено засіб автоматизованого конструювання паралельного коду для середовища OpenMP на основі високорівневих алгебро-алгоритмічних специфікацій. Застосування засобу демонструється на прикладі задачі моделювання циркуляції атмосфери, що представлений як сервіс у складі Інтернет- порталу з надання послуг метеопрогнозу. Здійснена генерація програмного коду та наведено резуль- тати експерименту з виконання розробленої паралельної програми прогнозування на мультипроцесо- рній платформі. Ключові слова: паралельні обчислення, метеорологічне прогнозування, синтез програм, алгебра алго- ритмів, Інтернет-портал. Вступ Системи прогнозування з року в рік стають все більш складними, використову- вані ними математичні моделі вдоскона- люються, обсяги обчислювальних даних стрімко зростають. Не винятком є і задача метеорологічного прогнозування. Врахо- вуючи великий попит на метеорологічні прогнози в різних галузях людської діяль- ності, проектування та розробка програм для розв’язання цієї задачі є надзвичайно актуальними. Крім того, достовірність та оперативність отримання даних метеоро- логічних прогнозів мають велике, а іноді і критичне значення, що висуває високі ви- моги до швидкісних характеристик таких програм. Задача метеорологічного прогнозу- вання є складною прикладною обчислюва- льною задачею з високими вимогами до точності отриманих результатів та жорст- кими часовими обмеженнями. Великий об- сяг обчислень над великими масивами да- них потребує впровадження паралельних реалізацій та забезпечення їх оптимізації. У попередній роботі авторів [1] бу- ло запропоновано реалізацію Інтернет- порталу для надання послуг метеорологіч- ного прогнозування, яка поєднує комплек- сність використання адекватних фізичних моделей атмосферних процесів з ефектив- ними обчислювальними схемами та мето- дами програмування високопродуктивних обчислень на мультипроцесорних систе- мах, що дає змогу досягати належного ступеня точності, повноти та своєчасності інформації, необхідної для задоволення потреб широкого кола користувачів. Дана робота поширює можливості попередньої на середовище програмування OpenMP з використанням більш потужної мультип- роцесорної техніки та розширеної поста- новки прикладної задачі. Одним з перспективних напрямів у розробці та дослідженні систем паралель- них і розподілених обчислень нині є по- будова програмних абстракцій у вигляді алгебро-алгоритмічних мов і моделей, що ставить своєю метою розвиток архітекту- рно- і мовно-незалежних засобів програ- мування для мультипроцесорних обчис- лювальних систем і мереж. У роботах [2– 9] були запропоновані теорія, методологія та інструментарій для автоматизованого проектування паралельних програм, що ґрунтуються на засобах високорівневої алгеброалгоритмічної формалізації та ав- томатизації перетворень програм. Зокре- ма, розроблено інструментальну систему автоматизації програмування, названу Ін- тегрованим інструментарієм Проектуван- ня та Синтезу програм (ІПС) [2–6]. В сис- темі спільно використовуються три форми подання алгоритмічних знань про предме- тні області: аналітична (формула в алгебрі алгоритмів), природно-лінгвістична (текс- това) та графова (граф-схеми). ІПС ґрун- тується на методі діалогового конструю- вання синтаксично правильних програм, Прикладні засоби програмування та програмне забезпечення 103 що орієнтований на виключення виник- нення синтаксичних помилок в процесі проектування. Інструментарій забезпечує покрокову розробку програм, починаючи від формальної специфікації і закінчуючи кодом цільовою мовою програмування (Java, C++). У роботах [7–9] розглядається нова версія системи синтезу програм – Онлайновий Діалоговий конструктор Синтаксично Правильних програм (ОД- СП). Особливість інструментарію ОДСП полягає у використанні Web-технологій та у розподіленій архітектурі системи. У попередніх роботах [2–9] системи ІПС та ОДСП були застосовані для розро- бки паралельних застосувань для багатоя- дерних центральних процесорів та графіч- них прискорювачів, а також розподілених та сервісно-орієнтованих програм для Грід. Розроблена інтеграція ІПС та систе- ми переписувальних правил Term- Ware [5, 10] для автоматизації трансфор- мації паралельних програм. Предметною областю застосування інструментальних засобів, зокрема, є задача метеорологічно- го прогнозування. Наприклад, у роботі [8] виконане автоматизоване проектування паралельної програми для розв’язання двовимірної задачі конвективної дифузії, яка виникає при математичному моделю- ванні циркуляції атмосфери в метеороло- гії. У даній статті наведено результати за- стосування інструментарію для генерації паралельної програми для тривимірного випадку згаданої задачі [11–13]. Розробле- на багатопотокова програма реалізована мовою С++ і використовує засоби OpenMP [14]. У роботі також виконане проектування сервісу, який використовує розроблену паралельну програму, і вхо- дить до складу вищезгаданого Інтернет- порталу з надання послуг метеорологічно- го прогнозування. Запропонований у даній статті під- хід є близьким до робіт, що відносяться до алгебраїчного програмування [15], синтезу програм на основі високорівневих специ- фікацій [16, 17], а також автоматизованої генерації OpenMP програм [18–21] та Java застосувань [22–24]. Відмінність нашого підходу полягає у використанні специфі- кацій алгебри Глушкова, поданих у приро- дно-лінгвістичній формі, що полегшує розуміння алгоритмів і досягнення необ- хідної якості програм. Іншою перевагою розроблених засобів є застосування методу діалогового конструювання синтаксично правильних програм, що виключає можли- вість виникнення синтаксичних помилок у процесі проектування схем. 1. Алгебра алгоритмів та інструментальні засоби автоматизованої розробки програм В основу пропонованого підходу до проектування паралельних програм покла- дений апарат систем алгоритмічних ал- гебр (САА) та їх модифікацій [2]. Модифі- ковані САА (САА-М) призначені для фор- малізації процесів мультиобробки, що ви- никають при конструюванні програмного забезпечення в мультипроцесорних систе- мах. На САА-М ґрунтуються розроблені інструментальні засоби автоматизованого проектування та генерації програм [2–9]. 1.1. Основні операції алгебри ал- горитмів. САА-М є двоосновною алгеб- рою  Pr;,Op , де Op – множина опе- раторів; Pr – множина логічних умов (предикатів);  – сигнатура, що склада- ється з логічних операцій (диз'юнкції, кон’юнкції, заперечення, лівого множення оператора на умову) та операторних опе- рацій (композиції, альтернативи, циклу та ін.). Оператори та предикати можуть бути базисними або складеними. На САА-М ґрунтується алгоритмі- чна мова САА/1 [2], призначена для бага- торівневого структурного проектування і документування послідовних та парале- льних алгоритмів і програм. Перевагою її використання є можливість опису алгори- тмів у природно-лінгвістичній формі, зру- чній для людини, що полегшує досягнен- ня необхідної якості програм. Подання операторів мовою САА/1 називаються САА-схемами. Далі наведено перелік назв та спе- цифікації основних операторних операцій сигнатури САА-М, поданих у природньо- лінгвістичній формі. Прикладні засоби програмування та програмне забезпечення 104 1. Композиція (послідовне вико- нання операторів): оператор 1 ПОТІМ оператор 2 або оператор 1; оператор 2 2. Альтернатива (умовний опера- тор): ЯКЩО умова ТО оператор 1 ІНАКШЕ оператор 2 КІНЕЦЬ ЯКЩО 3. Цикл: ПОКИ умова виконання циклу ЦИКЛ оператор КІНЕЦЬ ЦИКЛУ 4. Операція виконання одного з n операторів за істинності відповідної умови: ВИБІР ([умова 1]  оператор 1, [умова 2]  оператор 2, ... [умова n]  оператор n) 5. Асинхронна диз'юнкція – парале- льне виконання n операторів (потоків), де i – номер потоку: ПАРАЛЕЛЬНО (i = 0, ..., n–1) ( оператор ) 6. Синхронізатор, що виконує за- тримку обчислень доти, поки значення умови не стане істинним: ЧЕКАТИ умова Приклад використання наведених конструкцій наведено у розділі 2. Відмітимо, що операції САА-М та- кож можуть бути подані англійською мо- вою, як, наприклад, у роботі [9]. 1.2. Додаткові операції алгебри для об’єктно-орієнтованої парадигми. У сигнатуру САА-М також входять операції, призначені для формалізації основних по- нять об’єктно-орієнтованого програмуван- ня (класів, об’єктів та ін.). Відмітимо, що для сумісності з мовою програмування Java в сигнатуру включені операції для ви- значення анотацій. Анотації є спеціальною формою синтаксичних метаданих, яка мо- же бути додана у програмний код, і вико- ристовується для його аналізу, компіляції або виконання [25]. Анотованими можуть бути пакети, класи, методи, змінні та па- раметри. Далі наведено перелік основних операцій САА-М для визначення класів, що використовуються у даній роботі. 1. Визначення анотованого класу (в узагальненому вигляді): Annotated class X implements Y ( Class name, Interface name) <Annotations> Annotation (Annotation text); Annotation (Annotation text); ... <Fields> operators <Methods> operators де Class name – ім’я класу, який реалізує інтерфейс Interface name; <Annotations>, <Fields>, <Methods> – рядки, після яких необхідно вказати оператори визначення анотацій, полів даних та методів класу, ві- дповідно; Annotation text – текст анотації. 2. Анотації специфікуються за до- помогою конструкції Annotation (Annotation text), де Annotation text – параметр, у якому за- значається текст анотації. Прикладом визначення анотації для класу може бути конструкція: Annotation (Service). 3. Ініціалізоване поле даних: Field initialized (Modifiers, Field type, Field name) <Initialization> operator Ця конструкція використовується для визначення поля класу, якому присво- юється певне початкове значення. Тут Modifiers – список модифікаторів доступу (наприклад, public, static, final і т. п.); Field Прикладні засоби програмування та програмне забезпечення 105 type – тип даних поля; Field name – назва поля; <Initialization> – рядок, після якого потрібно вказати оператор або вираз, зна- чення якого буде використане для ініціалі- зації поля. 4. Визначення анотованого поля да- них: Field annotated (Modifiers, Field type, Field name) <Annotations> Annotation (Annotation text); Annotation (Annotation text); ... Тут словом annotated позначене по- ле, відмічене анотаціями (наприклад, Resource), які необхідно вказати після ряд- ка <Annotations>. 5. Визначення анотованого методу: Method annotated (Return type, Method name, Parameters list), <Annotations> Annotation (Annotation text); Annotation (Annotation text); ... <Body> operators Тут Return type – тип значення, яке повертає метод; Method name – назва ме- тоду; Parameters list – список формальних параметрів; <Annotations> – рядок, після якого зазначаються анотації до методу (наприклад, Override, Transactional); <Body> – рядок, після якого вказуються оператори тіла метода. 6. Конструкція для виклику методу екземпляра (об'єкта) класу має вигляд: Call instance method (Instance name, Method name, Arguments), де Instance name – ідентифікатор екземп- ляра класу; Method name – назва методу класу; Arguments – список фактичних па- раметрів методу. Приклад використання операцій, розглянутих у даному підрозділі, наведено у розділі 3. 1.3. Інструментальні системи ав- томатизованої розробки програм. Розро- блені інструментальні засоби підтримки проектування та генерації програм ґрун- туються на використанні розглянутих за- собів САА-М та методу діалогового конс- труювання синтаксично правильних про- грам (ДСП-методу) [2]. На відміну від тра- диційних синтаксичних аналізаторів, ДСП- метод орієнтований не на пошук і виправ- лення синтаксичних помилок, а на виклю- чення можливості їх появи в процесі побу- дови алгоритму. Основна ідея методу по- лягає в порівневому конструюванні схем зверху вниз шляхом суперпозиції мовних конструкцій САА-М. На кожному кроці конструювання система в діалозі з корис- тувачем надає на вибір лише ті конструк- ції, підстановка яких у текст алгоритму, що проектується, не порушує синтаксичну правильність схеми. На основі побудованої схеми алгоритму виконується автоматична генерація тексту програми цільовою мо- вою програмування. Відображення опера- цій САА-М у текст мовою програмування подане у вигляді шаблонів і зберігається в базі даних інструментарію. Згаданий підхід був реалізований в системі ІПС, розглянутій у роботах [2–6]. Основними компонентами системи ІПС є такі:  діалоговий конструктор синтак- сично правильних програм (ДСП-конст- руктор), призначений для діалогового про- ектування схем алгоритмів та синтезу про- грам мовами Java та C++;  редактор граф-схем;  база даних алгеброалгоритмічних специфікацій, у якій зберігається текст конструкцій САА і базисних елементів схем, а також їх програмні реалізації;  генератор САА-схем за гіперсхе- мами. Для автоматизації виконання тран- сформацій алгоритмів система ІПС засто- совується спільно з системою TermWare [10], що ґрунтується на паради- гмі переписувальних правил. У роботах [7–9] розглядається нова версія системи ІПС, названа онлайновим діалоговим конструктором синтаксично правильних програм. Система ОДСП при- Прикладні засоби програмування та програмне забезпечення 106 значена для діалогового проектування, ге- нерації й запуску програм. Основна від- мінність інструментарію ОДСП у порів- нянні з системою ІПС полягає у сервісно- орієнтованій архітектурі інструментарію та спрямованості на багатокористувальни- цьке використання інструментарію через Інтернет. Іншою відмінністю є орієнтація системи ОДСП на парадигму об’єктно- орієнтованого програмування, тоді як ін- струментарій ІПС в основному спрямова- ний на імперативну парадигму. У попередніх роботах [2–9] засоби САА-М та розроблені інструментальні си- стеми використовувались для автоматиза- ції проектування та генерації паралельних програм для багатоядерних центральних процесорів та графічних прискорювачів, зокрема, у предметній області метеороло- гічного прогнозування. У наступних розділах виконаний подальший розвиток створених засобів у напрямку їх застосування для тривимірно- го випадку задачі прогнозування, а також автоматизації розробки програмного за- безпечення для Інтернет-порталу з надання послуг прогнозування погоди. 2. Проектування паралельної схеми алгоритму для розв'язання тривимірної задачі конвективної дифузії У даному розділі розглядається за- стосування апарату САА-М та системи ІПС для розробки паралельної програми розв’язання тривимірної задачі конвектив- ної дифузії, яка виникає при математично- му моделюванні циркуляції атмосфери в метеорології. 2.1. Математична модель. Поста- новка задачі конвективної дифузії деталь- но викладена в [11]. У згаданій роботі роз- глянута модель циркуляції атмосфери, яка описується такими основними фізичними законами: 1) збереження кількості руху , 1 2 1 fg FF Vgradp dt dV     (1) 2) збереження маси (нестисливість середовища) ,0divV (2) 3) збереження теплової енергії ,   Vcdt dT  (3) 4) рівняння стану повітря ,TRp C (4) де V – вектор швидкості у неінерційній системі координат,  – густина повітря, p – атмосферний тиск,  – вектор кутової швидкості обертання Землі, gF – сила тя- жіння, fF – щільність сили тертя, T – аб- солютна температура,  – притік тепла до одиниці об’єму повітря, Vc – питома теп- лоємність сухого повітря за сталого об’єму, CR – питома газова стала сухого повітря. У моделях, що описують макрома- сштабну циркуляцію, використовують сферичну систему координат [26]. Рівнян- ня (1) – (3) після деяких спрощень мати- муть вигляд   , 1 cos 2cossin cos 1 cos       F a u wv p a z u w u a vu a u t u                         (5) , 1 sin cos 2 1 cos        F a wv a u u p a z v w v a vv a u t v                        (6) ,0 1 cos 1            tg a v z wv a u a (7) , cos    Vcz T w T a vT a u t T             (8) Прикладні засоби програмування та програмне забезпечення 107 де  – довгота,  – широта, z – висота над рівнем моря,  wvuV ,, , a – радіус Землі,  – швидкість добового обертання Землі,  zf FFFF ,,  . Паралельна чисельна реалізація цієї моделі здійснюється відповідно до три- рівневого алгоритму [12], який передбачає розпаралелювання за рівняннями, просто- ровими напрямками та підобластями. В ал- горитмі використовується модифікований адитивно-усереднений метод розщеплення (МАУМ) [13]. До розрахункової області застосовуються покоординатні декомпози- ції [27]: розбиття уздовж  для підзадач за напрямками  та z ; розбиття уздовж  для підзадач за напрямком  . Тому в про- грамі використані два формати подання даних в масивах: основний ]][][[ z та допоміжний ]][][[  z . Із рівнянь (5) та (6) визначалися горизонтальні складові руху u та v , із (7) – вертикальна складова w , із (8) – температура T , а із (4) – густина  . 2.2. Схема паралельного алгори- тму. У даному підрозділі наведена розроб- лена САА-схема паралельного алгоритму для розв'язання вищерозглянутої задачі конвективної дифузії. Схема сконструйо- вана із використанням інструментальної системи ІПС [2–6]. На основі схеми вико- нана генерація програмного коду мовою C++ з використанням засобів OpenMP [14]. САА-схема складається з двох складених операторів: "Основна схема" та "Парале- льні обчислення", що подані на рис. 1 та рис. 2, відповідно. Згадані складені опера- тори відповідають функціям main та CalcParallelPart у програмі мовою C++. У складеному операторі "Основна схема" виконується виклик операторів іні- ціалізації даних (параметрів, масивів і т. п.), відліку часу виконання програми, складеного оператора виконання парале- льних обчислень, порівняння обчислених значень та збереження результуючих да- них у файли. У цій схемі вказані такі змін- ні: Proc_Num – кількість паралельних по- токів; Subdomains – кількість підобластей; M_prm – m-параметр МАУМ; TmKnotsPer12h – кількість часових точок для 12-годинного періоду; TmLimCalc – кі- нцеве значення часу в умові m-циклу; tau – часовий крок; U, V – горизонтальні скла- дові руху, W – вертикальна складова; P – атмосферний тиск; T – абсолютна темпе- ратура. СХЕМА ПАРАЛЕЛЬНИЙ АЛГОРИТМ ДЛЯ РОЗВЯЗАННЯ 3-ВИМІРНОЇ ЗАДАЧІ КОНВЕКТИВНОЇ ДИФУЗІЇ "Основна схема" ==== "Визначити змінну (Proc_Num) типу (int) = (1)" ПОТІМ "Встановити початкові параметри (Subdomains, M_prm, TmKnotsPer12h, TmLimCalc, tau)" ПОТІМ "Почати відлік часу" ПОТІМ "Завантажити дані в масиви для (P, W, U, V, T)" ПОТІМ (Proc_Num := "Паралельні обчислення") ПОТІМ "Закінчити відлік часу та вивести результат" ПОТІМ "Порівняти інтерпольовані та обчислені значення в нормі L2" ПОТІМ "Зберегти дані у файли для 3-вимірної задачі конвективної дифузії" Рис. 1. Початок САА-схеми для задачі конвективної дифузії: складений оператор "Основна схема" Прикладні засоби програмування та програмне забезпечення 108 "Паралельні обчислення" ==== "Визначити константу (sdm_sz) типу (int) = ((SZ_X1-1)/Subdomains+1)" ПОТІМ "Визначити змінну (NmbThreads) типу (int)" ПОТІМ "Визначити масив (pOut[DIR][EVL_MT_VAL][MAX_SUBDMN]) типу (double)" ПОТІМ "(NmbThreads) := (Subdomains * DIR * EVL_MT_VAL)" ПОТІМ ПАРАЛЕЛЬНО (proc = 0, ..., NmbThreads-1) ( "Ініціалізація змінних та масивів" ПОТІМ "Коментарій (***** m-цикл *****)" ПОТІМ "(n) := (M_prm)" ПОТІМ ПОКИ '(n * tau) <= (TmLimCalc)' ЦИКЛ "Встановити значення для U, V, T, P, D, W, F, C та граничні умови" ПОТІМ ВИБІР (['(dir) = (0)']  "Обчислити задачі для напрямку (Lam)", ['(dir) = (1)']  "Обчислити задачі для напрямку (Fi)", ['(dir) = (2)']  "Обчислити задачі для напрямку (Z)") ПОТІМ "Поміняти місцями значення в масивах pR1 та pR2" ПОТІМ ЧЕКАТИ 'Обробка в усіх потоках закінчена' ПОТІМ "Обчислити середні значення на основі отриманих результатів для кожного напрямку" ПОТІМ ЧЕКАТИ 'Обробка в усіх потоках закінчена' ПОТІМ "Занести результати в глобальні масиви" ПОТІМ ЧЕКАТИ 'Обробка в усіх потоках закінчена' ПОТІМ "Збільшити (n) на (M_prm)" КІНЕЦЬ ЦИКЛУ ПОТІМ "Звільнити пам'ять для масивів для 3-вимірної задачі конвективної дифузії" ) ПОТІМ "Повернути значення (NmbThreads)"; Рис. 2. Продовження САА-схеми для задачі конвективної дифузії: деталізація складеного оператора "Паралельні обчислення" Прикладні засоби програмування та програмне забезпечення 109 Схема "Паралельні обчислення" (див. рис. 2) починається з ініціалізації змінних і масивів, після чого виконується m-цикл МАУМ. У тілі m-циклу спочатку здійснюється підготовка до основних об- числень: постановка граничних умов, об- числення коефіцієнтів рівнянь, вертикаль- ної складової швидкості і т. п. Далі обчис- люються підзадачі для кожного з напрям- ків  ,  та z . Потім виконується усеред- нювання результатів, які відповідають різ- ним напрямкам, зі збереженням граничних умов. У кінці циклу отримані результати записуються в загальні масиви. Окрім вищезазначених, у схемі па- ралельних обчислень вказані такі додатко- ві змінні та константи: proc – номер пото- ку; NmbThreads – кількість паралельних потоків; sdm_sz – розмір підобластей у на- прямку  ; SZ_X1 – кількість точок скін- ченно-різницевої сітки у напрямку  ; pOut, pR1, pR2 – масиви для зберігання проміжних результатів; DIR = 3 кількість напрямків ( ,  , z ); EVL_MT_VAL = 3 – кількість метеорологічних величин в ево- люційному рівнянні; MAX_SUBDMN – ма- ксимальна кількість підобластей; n – змін- на m-циклу; D – густина повітря; F – кое- фіцієнт рівнянь; C – адвекція; dir – цілочи- сельна змінна для зберігання значення по- точного напрямку (дорівнює 0 для  ; 1 для  ; 2 для z ). Кількість паралельних пото- ків в алгоритмі встановлюється згідно фо- рмули ). ( := )( EVL_MT_VAL DIRSubdomainsNmbThreads   (9) Як згадувалося вище, на основі по- будованої САА-схеми в системі ІПС вико- нана генерація програмного коду мовою C++ із використанням OpenMP [14]. OpenMP є сукупністю директив компіля- тора (прагм), бібліотечних процедур і змінних оточення, що призначена для про- грамування багатопотокових застосувань на багатопроцесорних системах із загаль- ною пам’яттю. У процесі генерації коду ДСП-конструктор інструментарію ІПС ви- користовує шаблони програмних реаліза- цій операцій САА-М та базисних понять із бази даних. Зокрема, операцію асинхрон- ного виконання потоків (ПАРАЛЕЛЬНО) для задачі, що розглядається, було реалізо- вано із використанням OpenMP директиви #pragma omp parallel. Для реалізації опе- рації синхронізації (ЧЕКАТИ) було засто- совано директиву #pragma omp barrier, яка виконує затримку обчислень доти, поки всі потоки не завершать свою роботу. Результати проведеного експериме- нту з виконання згенерованої програми на мультипроцесорній платформі розгляда- ються у розділі 4. 3. Проектування онлайнового сервісу для надання послуг метеорологічного прогнозування У даному розділі проілюстроване застосування засобів алгебри алгоритмів та системи ОДСП на прикладі розробки онлайнового сервісу, який входить до складу сервісно-орієнтованої системи «Оракул-Портал», що призначена для на- дання послуг метеорологічного прогнозу- вання [1]. Згаданий портал складається з декількох модулів-сервісів і використовує паралельні обчислення на мультипроцесо- рній платформі. Структура системи дета- льно розглянута у роботі [1]. До складу порталу входять сервіси управління ме- теорологічними прогнозами та розрахунку прогнозів. База даних (БД) системи міс- тить вихідні метеодані, постачальником яких є метеорологічний центр у м. Офенбах [28], а також дані уточнюючих прогнозів, розрахованих на основі вихід- них даних. Значна частина системи напи- сана мовою Java, крім власне паралельних програм для виконання обчислення про- гнозу, які розроблені мовою C++ із вико- ристанням OpenMP. На даний момент ви- користовуються три варіанти програм для обрахунку прогнозів: двовимірного, три- вимірного та періодичного. Вище у розді- лі 2 даної роботи наведено побудовану САА-схему паралельного алгоритму для автоматизованої генерації програми для тривимірного випадку задачі прогнозуван- ня. Далі на рис. 3 показано побудовану в системі ОДСП схему для Java класу Prediction3DServiceImpl, який реалізує один із сервісів системи «Оракул-Портал». Прикладні засоби програмування та програмне забезпечення 110 Annotated class X implements Y (Prediction3DServiceImpl, Prediction3DService) <Annotations> Annotation (Service) <Fields> Field initialized (private static final, Logger, LOGGER) <Initialization> Call instance method (Logger, getLogger, Prediction3DServiceImpl.class); Field annotated (public, Prediction3DRepository, prediction3dRepository) <Annotations> Annotation (Resource) <Methods> Method annotated (Prediction3D, findById, Long id) <Annotations> Annotation (Override); Annotation (Transactional) <Body> Call instance method (LOGGER, debug, "Trying get prediction3d #" + id + " from DB"); Return (Call instance method (prediction3dRepository, findById, id)); Method annotated (void, savePrediction, Prediction3D prediction) <Annotations> Annotation (Override); Annotation (Transactional) <Body> Assign (prediction, Call instance method (prediction3dRepository, save, prediction)); Call instance method (LOGGER, debug,"Prediction3D #" + prediction.getId() + " has been saved to DB"); Method annotated (Long, createPrediction, Prediction3D prediction) <Annotations> Annotation(Override) <Body> Assign (prediction, Call instance method (prediction3dRepository, save, prediction)); Return (Call instance method (prediction, getId)); Method annotated (void, deletePrediction, Long id) <Annotations> Annotation(Override) <Body> Call instance method (prediction3dRepository, delete, id); Рис. 3. Схема класу Prediction3DServiceImpl Прикладні засоби програмування та програмне забезпечення 111 При конструюванні наведеної схе- ми використані об’єктно-орієнтовані опе- рації САА-М, розглянуті у підрозділі 1.2. Клас Prediction3DServiceImpl визначено за допомогою конструкції "Annotated class X implements Y", у параметрах якої вказано назву класу та назву реалізованого ним ін- терфейсу Prediction3DService. Після заго- ловка класу наведено опис анотації, визна- чення полів та методів класу. Полями класу є ініціалізоване поле LOGGER та анотоване поле prediction3D- Repository. Поле LOGGER є екземпляром Java класу Logger, методи якого призначе- ні для запису повідомлень у журнал. Поле prediction3DRepository представляє базу даних порталу. Клас Prediction3DServiceImpl також містить чотири методи. Метод findById призначений для пошуку (за номером id) обрахованого прогнозу у базі даних. Ме- тоди savePrediction, createPrediction та deletePrediction призначені для збережен- ня, створення та видалення прогнозів з БД відповідно. На основі побудованої схеми в системі ОДСП виконана автоматична ге- нерація програмного коду класу Prediction3DServiceImpl мовою Java. 4. Результати чисельних експериментів Проведено два незалежних експе- рименти з виконання OpenMP програми для розв’язання тривимірної задачі метео- рологічного прогнозування, згенерованої за побудованою у розділі 2 схемою, на двох мультипроцесорних системах. Перша система є одним з вузлів кластера Інститу- ту програмних систем НАНУ і складається із двох чотирьох-ядерних процесорів Quad Core Intel Xeon E5405 із частотою 2 ГГц (всього 8 ядер на вузлі). Як другу мульти- процесорну систему використано один з вузлів суперкомп’ютерного обчислюваль- ного комплексу СКІТ-4 Інституту кіберне- тики імені В.М. Глушкова НАН України [29]. Згаданий вузол містить два шести- ядерних процесори Intel Xeon X5675, із ча- стотою 3.07 ГГц (всього 12 фізичних ядер на вузлі; 24 логічних ядра – у режимі hyper-threading). У процесі експерименту були встановлені такі значення параметрів програми: термін часу, на який виконується розрахунок прогнозу погоди – 12 годин; m-параметр модифікованого ади- тивно-усередненого методу розщеплення [11–13] M_prm = 10; кількість точок часової сітки TmKnotsPer12h = 4320; кінцеве значення часу TmLimCalc = 43200 сек; часовий крок tau = 10 сек; кількість підобластей Subdomains = 2, кількість потоків Nmb- Threads = 18 (див. формулу (9) у підрозді- лі 2.2). Просторова область визначення за- дачі відповідала наявним архівним даним і становила: ]90,0[  , ]90,0[  , ]18000;8000[z . Розмір вхідної скінченно-різницевої сітки обрано 11182182  точок. У таблиці подано отримані резуль- тати виконання програми на 1 та 8 ядрах процесорів кластера ІПС НАНУ та 1 та 12 фізичних ядрах кластера СКІТ-4. Як видно з таблиці, проведені експерименти демонструють гарний ступінь розпарале- люваності обчислень. Краще значення прискорення на кластері СКІТ-4 поясню- ється більшою кількістю ядер та наявніс- тю вищезгаданого режиму hyper- threading. Прикладні засоби програмування та програмне забезпечення 112 Висновки Виконане автоматизоване конс- труювання високорівневих алгебро-алго- ритмічних специфікацій програмного за- безпечення для розв’язання задачі метео- рологічного прогнозування. Прогнозу- вання здійснюється на основі паралельної реалізації задач моделювання циркуляції атмосфери на мультипроцесорній платфо- рмі. Виконане проектування сервісу, що входить до складу розроблюваного Інтер- нет-порталу [1] з надання послуг метеоп- рогнозу. Виконана генерація програмного коду за побудованими специфікаціями на основі використання розроблених інстру- ментальних засобів автоматизованого проектування та синтезу програм. Перева- гою використовуваного в інструментарії підходу до проектування програм є вико- ристання мовних конструкцій, близьких до природної мови, а також застосування методу, який забезпечує синтаксичну пра- вильність алгоритмів та програм, що про- ектуються. Проведено нові експерименти з ви- конання розробленої паралельної програ- ми для розв’язання задачі метеорологічно- го прогнозування на мультипроцесорній платформі, що показали гарний ступінь розпаралелюваності обчислень. 1. Дорошенко А.Ю., Іваненко П.А., Ов- дій О.М. та інші. До створення Інтернет- порталу надання послуг метеорологічного прогнозування на мультипроцесорній пла- тформі // Проблеми програмування. – 2015. – № 3. – С. 24–32. 2. Андон Ф.И., Дорошенко А.Е., Яценко Е.А. и др. Алгеброалгоритмические модели и ме- тоды параллельного программирования. – Киев: Академпериодика, 2007. – 631 с. 3. Дорошенко Е.А., Яценко Е.А. О синтезе программ на языке Java по алгеброалгори- тмическим спецификациям // Проблеми програмування. – 2006. – № 4. – С. 58–70. 4. Дорошенко А.Е., Жереб К.А., Яценко Е.А. Формализованное проектирование эффек- тивных многопоточных программ // Там само. – 2007. – № 1. – С. 17–30. 5. Яценко Е.А. Интеграция инструменталь- ных средств алгебры алгоритмов и перепи- сывания термов для разработки эффектив- ных параллельных программ // Там само. – 2013. – № 2. – С. 62–70. 6. Дорошенко А.Ю., Бекетов О.Г., Яцен- ко О.А. та інші. Розробка сервісно-орієн- тованих засобів для запуску паралельних програм на мультипроцесорному кластері // Там само. – 2014. – № 4. – С. 3–14. 7. Иовчев В.А., Мохница А.С. Инструмента- льные средства алгебры алгоритмики на платформе Web 2.0 // Там само. – 2010. – № 2–3. – С. 547–555. 8. Дорошенко А.Ю., Бекетов О.Г., Яценко О.А. та інші. Автоматизована генерація паралельних програм для графічних прис- корювачів на основі схем алгоритмів // Там само. – 2015. – № 1. – С. 19–28. 9. Андон Ф.И., Дорошенко А.Е., Яценко Е.А. и др. Инструментальные средства автома- тизации параллельного программирования Таблиця. Результати виконання паралельної програми для розв’язання задачі конвективної дифузії на кластерах ІПС та СКІТ-4 Мультипроцесорна система Час (1)T виконання на 1 ядрі, сек Час )(NT виконання на N ядрах, сек Мультипроцесорне прискорення, )( (1) = NT T Sp Кластер ІПС, кількість фізичних ядер 8N 1504,80 259,43 5,80 Кластер СКІТ-4, кількість фізичних ядер 12N 988,20 83,88 11,78 Прикладні засоби програмування та програмне забезпечення 113 на основе алгебры алгоритмов // Киберне- тика и системный анализ. – 2015. – № 1. – С. 162–170. 10. Doroshenko A., Shevchenko R. A rewriting framework for rule-based programming dynamic applications // Fundamenta Informaticae. – Amsterdam: IOS Press, 2006. – Vol. 72, N 1–3. – P. 95–108. 11. Черниш Р.І. Паралельна реалізація моделі макромасштабної циркуляції атмосфери // Вісник Київського національного універ- ситету імені Тараса Шевченка: серія фізи- ко-математичні науки. – 2009. – № 2. – С. 155–158. 12. Черниш Р.І., Тирчак Ю.М., Іваненко П.А. Побудова паралельного алгоритму чисель- ного розв’язання багатовимірної задачі моделювання навколишнього середови- ща // Проблеми програмування. – 2009. – № 1. – С. 85–91. 13. Прусов В.А., Дорошенко А.Е., Черныш Р.И. Метод численного решения многомерной задачи конвективной диффузии // Кибер- нетика и системный анализ. – 2009. – № 1. – С. 100–107. 14. OpenMP Application Program Interface [Електронний ресурс]. – Режим доступу: http://www.openmp.org/mp-documents/ OpenMP4.0.0.pdf. – 04.11.2015 р. 15. Sannella D., Tarlecki A. Foundations of algebraic specification and formal software development. – Berlin: Springer-Verlag, 2012. – 594 p. 16. Flener P. Achievements and prospects of program synthesis // Lecture Notes in Artificial Intelligence. – Berlin: Springer- Verlag, 2002. – Vol. 2407. – P. 310–346. 17. Gulwani S. Dimensions in program synthesis // Proc. 12th Int. ACM SIGPLAN symposium on Principles and Practice of Declarative Programming, Hagenberg, Austria (26–28 July, 2010). – New York: ACM, 2010. – P. 13–24. 18. Raghesh A. A framework for automatic OpenMP code generation. A project report [Електронний ресурс]. – Режим доступу: http://www. cse.iitm.ac.in/~raghesh/raghesh- a-masters-thesis.pdf. – 04.11.2015 р. 19. Hu K., Zhang T., Yang Z. Multi-threaded code generation from Signal program to OpenMP // Frontiers of Computer Science. – Berlin: Springer-Verlag, 2013. – Vol. 7, N 5. – P. 617–626. 20. PLUTO – an automatic parallelizer and locality optimizer for multicores [Електрон- ний ресурс]. – Режим доступу: http://pluto- compiler.sourceforge.net/ – 04.11.2015 р. 21. Par4all [Електронний ресурс]. – Режим до- ступу: – http://www.par4all.org/ – 04.11.2015 р. 22. Kabir M.H. Automatic construction of Java programs from functional program specifications // International Journal Of Advanced Chemical Science and Applications. – Bhubaneswar: IRD India, 2015. – Vol. 6, N 4. – P. 65–72. 23. Schoeberl M., Brooks C., Lee E.A. Code generation for embedded Java with Ptolemy // Proc. 8th IFIP Workshop on Software Technologies for Future Embedded and Ubiquitous Systems, Waidhofen, Austria (13– 15 October, 2010). Lecture Notes in Computer Science. – Berlin: Springer-Verlag, 2010. – Vol. 6399. – P. 155–166. 24. Herrington J. Code-generation techniques for Java [Електронний ресурс]. – Режим дос- тупу: http://www.onjava.com/pub/a/onjava/ 2003/09/03/generation.html. – 04.11.2015 р. 25. Oracle Java documentation. The Java Tutorials. Lesson: Annotations [Електронний ресурс]. – Режим доступу: https://docs. oracle.com/javase/tutorial/java/annotations/ – 04.11.2015 р. 26. Белов П.Н. Практические методы числен- ного прогноза погоды. – Ленинград: Гид- рометеорологическое издательство, 1967. – 336 с. 27. Черниш Р.І. Покоординатна декомпозиція області для еволюційних задач математич- ної фізики // Вісник Київського національ- ного університету імені Тараса Шевченка: серія фізико-математичні науки. – 2008. – № 4. – С. 191–194. 28. Wetter und Klima – Deutscher Wetterdienst – Startseite (веб-сайт метеорологічного центру у м. Офенбах) [Електронний ре- сурс]. – Режим доступу: http://www.dwd. de. – 04.11.2015 р. 29. Суперкомп’ютер ІК НАН України. – http://icybcluster.org.ua. References 1. Doroshenko A.Yu., Ivanenko P.A., Ovdii O.M. at all. Creation of an Internet portal providing meteorological forecasting services on multi- processor platform // Problems in program- ming. – 2015. N 3. – P. 24–32 (in Ukrainian). 2. Andon P.I. et al. Algebra-algorithmic models and methods of parallel programming. Kiev: Academperiodika, 2007 (in Russian). http://icybcluster.org.ua/ Прикладні засоби програмування та програмне забезпечення 114 3. Doroshenko, A.Yu. & Yatsenko O.A. About the synthesis of Java programs by algebra- algorithmic specifications // Problems in pro- gramming. – 2006. – N 4. – P. 58–70 (in Rus- sian). 4. Doroshenko, A.Yu., Zhereb K.A & Yatsenko O.A. Formalized design of efficient multi- threaded programs // Problems in program- ming. – 2007. – N 1. – P. 17–30 (in Russian). 5. Yatsenko O.A. (2013) Integration of algebra- algorithmic tools and term rewriting for effi- cient parallel programs development // Prob- lems in programming. – 2013. – N 2. – P. 62–70 (in Russian). 6. Doroshenko A.Yu., Beketov O.G., Yatsenko O.A. at all. Development of the service- oriented soft-ware for launching parallel pro- grams on a multiprocessor cluster // Problems in programming. – 2014. – N 4. – P. 3–14 (in Ukrainian). 7. Iovchev V.O. & Mokhnitsa O.S. Algebra- algorithmic tools on Web 2.0 platform // Problems in programming. – 2010. – N 2. – P. 547–555 (in Russian). 8. Doroshenko A.Yu., Beketov O.G., Ivaniv R.B. at all. Automated generation of parallel programs for graphics processing units based on algorithm schemes. Problems in programming. – 2015. – N 1. – P. 19–28 (in Ukrainian). 9. Andon, P.I., Doroshenko, A.Yu., Beketov, O.G., Iovchev, V.O. & Yatsenko O.A. (2015) Software tools for automation of parallel pro- gramming on the basis of algebra of algo- rithms // Cybernetics and systems analysis. (1). P. 162–170 (in Russian). 10. Doroshenko A. & Shevchenko R. (2006) A rewriting framework for rule-based program- ming dynamic applications. Fundamenta In- formaticae. Amsterdam: IOS Press. 72 (1-3). – P. 95–108. 11. Chernysh R.I. (2009) Parallel implementation of atmospheric macroscale circulation model. Bulletin of the University of Kiev, Series: Physics & Mathematics. (2). – P. 155–158 (in Ukrainian). 12. Chernysh R.I., Tyrchak Yu.M. & Ivanenko, P.A. (2009) Construction of parallel algorithm for numeric solving multidimensional prob- lem of environmental modeling // Problems in programming. (1). – P. 85–91 (in Ukrainian). 13. Prusov, V.A., Doroshenko, A.Yu. & Chernysh, R.I. (2009) A method for numerical solution of a multidimensional convection-diffusion problem // Cybernetics and systems analysis. (1). – P. 100–107 (in Russian). 14. OPENMP. (2015) OpenMP Application Pro- gram Interface. [Online] Available from: http://www.openmp.org/mp-documents/ OpenMP4.0.0.pdf [Accessed: 4 November 2015]. 15. Sannella D. & Tarlecki A. (2012) Foundations of algebraic specification and formal software development. Berlin: Springer-Verlag. 16. Flener P. (2002) Achievements and prospects of program synthesis. Lecture Notes in Artifi- cial Intelligence. Berlin: Springer-Verlag. 2407. – P. 310–346. 17. Gulwani S. (2010) Dimensions in program synthesis. In Proc. 12th Int. ACM SIGPLAN symposium on Principles and Practice of De- clarative Programming. Hagenberg, Austria, 26-28 July 2010. New York: ACM. – P. 13–24. 18. Raghesh A. (2011) A framework for automat- ic OpenMP code generation. A project report. [Online]. Available from: http://www. cse.iitm.ac.in/~raghesh/raghesh-a-masters- thesis.pdf [Accessed: 4 November 2015]. 19. Hu K., Zhang T., Yang Z. Multi-threaded code generation from Signal program to OpenMP // Frontiers of Computer Science. – Berlin: Springer-Verlag, 2013. – Vol. 7, N 5. – P. 617–626. 20. PLUTO-COMPILER. (2015) PLUTO – an automatic parallelizer and locality optimizer for multicores. [Online] Available from: http://pluto-compiler.sourceforge.net/ [Accessed: 4 November 2015]. 21. PAR4ALL. [Online] Available from: http://www.par4all.org/ [Accessed: 4 Novem- ber 2015]. 22. Kabir M.H. Automatic construction of Java programs from functional program specifications // International Journal Of Advanced Chemical Science and Applications. – Bhubaneswar: IRD India, 2015. – Vol. 6, N 4. – P. 65–72. 23. Schoeberl M., Brooks C., Lee E.A. Code generation for embedded Java with Ptolemy // Proc. 8th IFIP Workshop on Software Technologies for Future Embedded and Ubiquitous Systems, Waidhofen, Austria (13– 15 October, 2010). Lecture Notes in Computer Science. – Berlin: Springer-Verlag, 2010. – Vol. 6399. – P. 155–166. 24. Herrington J. (2003) Code-generation tech- niques for Java. [Online] Available from: http://www.onjava.com/pub/a/onjava/ 2003/09/03/generation.html [Accessed: 4 No- vember 2015]. 25. ORACLE. (2015) Java documentation. The Java Tutorials. Lesson: Annotations. [Online] Прикладні засоби програмування та програмне забезпечення 115 Available from: https://docs.oracle.com/ javase/tutorial/java/annotations/ [Accessed: 4 November 2015]. 26. Belov P.N. (1967) Practical methods for nu- merical weather prediction. Saint Petersburg: Hydrometeorological publishing. (in Russian). 27. Chernysh R.I. (2008) Coordinate-wise de- composition of area for evolutionary tasks of mathematical physics. Bulletin of the Univer- sity of Kiev, Series: Physics & Mathematics. (4). – P. 191–194 (in Ukrainian). 28. DWD (2015) Wetter und Klima – Deutscher Wetterdienst. [Online] Available from: http://www.dwd.de [Accessed: 4 November 2015]. 29. ICYBCLUSTER. (2015) Supercomputer of IC [Online] Available from: http://icybcluster.org.ua [Accessed: 4 Novem- ber 2015]. Одержано 23.11.2015 Про авторів: Дорошенко Анатолій Юхимович, доктор фізико-математичних наук, професор, завідувач відділу теорії комп'ютерних обчислень Інституту програмних систем НАН України, професор кафедри автоматики і управлін- ня в технічних системах НТУУ “КПІ”. Кількість наукових публікацій в українських виданнях – понад 150. Кількість наукових публікацій в іноземних виданнях – понад 30. Індекс Гірша – 3. http://orcid.org /0000-0002-8435-1451, Іваненко Павло Андрійович, молодший науковий співробітник Інституту програмних систем НАН України. Кількість наукових публікацій в українських виданнях – понад 30. Кількість наукових публікацій в іноземних виданнях – 2. http://orcid.org/0000-0001-5437-9763. Овдій Ольга Михайлівна, молодший науковий співробітник Інституту програмних систем НАН України. Кількість наукових публікацій в українських виданнях – 16. Кількість наукових публікацій в іноземних виданнях – 2. http://orcid.org/0000-0002-8891-7002. Яценко Олена Анатоліївна, кандидат фізико-математичних наук, старший науковий співробітник Інституту програмних систем НАН України. Кількість наукових публікацій в українських виданнях – 28. Кількість наукових публікацій в іноземних виданнях – 12. http://orcid.org/0000-0002-4700-6704. Місце роботи авторів: Інститут програмних систем НАН України, 03187, м. Київ-187, проспект Академіка Глушкова, 40. Тел.: (044) 526 3559. E-mail: doroshenkoanatoliy2@gmail.com, paiv@ukr.net, olga.ovdiy@gmail.com, oayat@ukr.net http://icybcluster.org.ua/ mailto:oayat@ukr.net