SlideShare una empresa de Scribd logo
1 de 17
1




РОЗПАРАЛЕЛЮВАННЯ
ПРОГРАМ НА ФОРТРАНІ З
ВИКОРИСТАННЯМ ТЕХНІКИ
ПЕРЕПИСУВАЛЬНИХ
ПРАВИЛ

A Дорошенко, K.А. Жереб, Є.М. Туліка
 .Ю.
Мета роботи
2


       Автоматичне розпаралелювання програм на
        мові Фортран
       Покращення послідовних програм
Актуальність
3


       Багато унаслідованого коду
       Виникав в ті часи, коли паралелізація була не
        основним напрямком оптимізації
Цільова задача
4


       Задача електронної густини
       Програма обчислює електронну та спінову
        густину атомів поліциклічних ароматичних
        вуглеводнів на прямокутній сітці заданого
        розміру N
Використана техніка
5


       Техніка переписувальних правил
       Система Termware
Як працюють переписувальні
6
    правила
       source [condition ] -> destination [action]
           source – вхідний зразок;
           destination – вихідний зразок;
           condition – умова, що визначає застосовність
            правила;
           action – дія, виконувана при спрацьовуванні
            правила.
Методологія розпаралелювання
7
Генерація термів з коду на Фортрані
8


       Використано компілятор GCC
       В свому арсеналі має десяток різних мов
       Має відкритий код
Методологія генерації термів
9


       Перетворюємо програму на фортрані в
        проміжне представлення GCC GENERIC
       З проміжного представлення генеруємо терм
Generic представлення
10


        gcc --fdump-tree-original-raw
     exits (integer(kind=4) & restrict k)
     @1       function_decl name: @2            mngl: @3     type: @4
          scpe: @5         srcp: ElDen.for:1294
          args: @6        link: extern body: @7
     @2       identifier_node strg: exits      lngt: 5
     @3       identifier_node strg: exits_ lngt: 6
     @4       function_type size: @8            algn: 8      retn: @9
          prms: @10
     @5       translation_unit_decl
     @6       parm_decl        name: @11         type: @12   scpe: @1
        srcp: ElDen.for:1294             argt: @12
        size: @13         algn: 64        used: 1
     @7       bind_expr       type: @9         vars: @14     body: @15
     …
Синтаксична модель програми
11

     function_decl (            args(parm_decl (Еук
       identifier(node1),           identifier(node6),
       name(identifier_node (       name(identifier_node (
                                        strg(k),
          strg(exits),                  lngt(1)
          lngt(5)                       )),
          )),                               argt(2),
                                            algn(64),
       mngl(identifier_node (       used(1)
          strg(exits_),             )),
          lngt(6)                 body(bind_expr (...))
                                )
          )),
       type(),
Розпаралелювання
12




        Do Cnt($va r,$s ta rt,$e nd ,
         $bo d y ,_M RK_Pa ra lle l)->
                      A
         Pa ra lle lDo Cnt($va r,$s ta rt,$e nd ,$bo d y )
Вибір циклів для перетворення
13

        В коді 54 цикли                      DO IB=1,NZ
        Використовуємо профілювання             DO KD=1,NY
         для знаходження найбільш                   DO …
         критичних фрагментів
                                                       CALL
        Знаходимо всі цикли, що містять
                                                        ELDENS
         такі фрагменти
          6 циклів
                                              PROCEDURE
                                               ELDENS
        Вибрано другий ззовні цикл              DO …

                                                    DO …

                                                       DO

                                                          <hotspot>
Знаходження циклів
14

     1. [_MarkHotspot($x):$y] -> _MarkHotspot([$x:$y])

     2. [$x:_MarkHotspot($y)] -> _MarkHotspot([$x:$y])
     DoCnt($var,$start,$end, _MarkHotspot($body)] ->
     _MarkHotspot(DoCnt($var,$start,$end,$body,
     _MARK_CAND_PARALLEL))

     3. Function($name, $params, $return,_MarkHotspot($body))
     -> Function($name,$params,$return,$body,
     _MARK_PASSED)

     4. [addItem($name)]
     Call($name,$params) [hasItem($name)] ->
     _MarkHotspot(Call($name,$params))
Генерація коду програми з терму
15


        Терм розбивається на окремі лексеми
        Лексеми додаються до дерева синтаксису
        Код програми будується на основі
         синтаксичного дерева
Порівняння ефективності
16




     
         Прискорення   3,3-3,6 разів на 4 ядрах
Висновки
17


        Побудовано методологію розпаралелення
         программ
        Побудовано прикладні засоби розпаралелення і
         протестовано на цільовій задачі
        Подальша робота включає поширення підходу
         на випадо розподілених і гетерогенних
         архітектур

Más contenido relacionado

Similar a Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних Правил

Повнотекстовий пошук - кішочки
Повнотекстовий пошук - кішочкиПовнотекстовий пошук - кішочки
Повнотекстовий пошук - кішочкиArtem Shoobovych
 
Lecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesLecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesMaksym Davydov
 
опорні схеми
опорні схемиопорні схеми
опорні схемиIrina Tabanets
 
Unit1 summary
Unit1 summaryUnit1 summary
Unit1 summaryeleksdev
 
алфавіт мови програмування Pascal 14
алфавіт мови програмування Pascal 14алфавіт мови програмування Pascal 14
алфавіт мови програмування Pascal 14zero1996
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)Anatoliy Okhotnikov
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Dmitry Chabanenko
 
Основи мови Ci
Основи мови CiОснови мови Ci
Основи мови CiEscuela
 
Cvim saisentan-gpu-open cl
Cvim saisentan-gpu-open clCvim saisentan-gpu-open cl
Cvim saisentan-gpu-open cltomoaki0705
 
01 c# basics
01 c# basics01 c# basics
01 c# basicseleksdev
 

Similar a Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних Правил (12)

Повнотекстовий пошук - кішочки
Повнотекстовий пошук - кішочкиПовнотекстовий пошук - кішочки
Повнотекстовий пошук - кішочки
 
Lecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesLecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile Devices
 
опорні схеми
опорні схемиопорні схеми
опорні схеми
 
Лекція №11
Лекція №11Лекція №11
Лекція №11
 
Unit1 summary
Unit1 summaryUnit1 summary
Unit1 summary
 
алфавіт мови програмування Pascal 14
алфавіт мови програмування Pascal 14алфавіт мови програмування Pascal 14
алфавіт мови програмування Pascal 14
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1
 
Основи мови Ci
Основи мови CiОснови мови Ci
Основи мови Ci
 
Cvim saisentan-gpu-open cl
Cvim saisentan-gpu-open clCvim saisentan-gpu-open cl
Cvim saisentan-gpu-open cl
 
1
11
1
 
01 c# basics
01 c# basics01 c# basics
01 c# basics
 

Más de Vrann Tulika

Magento Web API Ecosystem. Imagine 2018
Magento Web API Ecosystem. Imagine 2018Magento Web API Ecosystem. Imagine 2018
Magento Web API Ecosystem. Imagine 2018Vrann Tulika
 
Career of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce CompanyCareer of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce CompanyVrann Tulika
 
Magento Live Australia 2016 Facebook Chatbot for Magento
Magento Live Australia 2016 Facebook Chatbot for MagentoMagento Live Australia 2016 Facebook Chatbot for Magento
Magento Live Australia 2016 Facebook Chatbot for MagentoVrann Tulika
 
Magento Live Australia 2016: Request Flow
Magento Live Australia 2016: Request FlowMagento Live Australia 2016: Request Flow
Magento Live Australia 2016: Request FlowVrann Tulika
 
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQMage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQVrann Tulika
 
Enterprise Patterns in Magento
Enterprise Patterns in MagentoEnterprise Patterns in Magento
Enterprise Patterns in MagentoVrann Tulika
 
PHP and Asynchronous Systems
PHP and Asynchronous SystemsPHP and Asynchronous Systems
PHP and Asynchronous SystemsVrann Tulika
 

Más de Vrann Tulika (7)

Magento Web API Ecosystem. Imagine 2018
Magento Web API Ecosystem. Imagine 2018Magento Web API Ecosystem. Imagine 2018
Magento Web API Ecosystem. Imagine 2018
 
Career of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce CompanyCareer of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce Company
 
Magento Live Australia 2016 Facebook Chatbot for Magento
Magento Live Australia 2016 Facebook Chatbot for MagentoMagento Live Australia 2016 Facebook Chatbot for Magento
Magento Live Australia 2016 Facebook Chatbot for Magento
 
Magento Live Australia 2016: Request Flow
Magento Live Australia 2016: Request FlowMagento Live Australia 2016: Request Flow
Magento Live Australia 2016: Request Flow
 
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQMage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
 
Enterprise Patterns in Magento
Enterprise Patterns in MagentoEnterprise Patterns in Magento
Enterprise Patterns in Magento
 
PHP and Asynchronous Systems
PHP and Asynchronous SystemsPHP and Asynchronous Systems
PHP and Asynchronous Systems
 

Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних Правил

  • 1. 1 РОЗПАРАЛЕЛЮВАННЯ ПРОГРАМ НА ФОРТРАНІ З ВИКОРИСТАННЯМ ТЕХНІКИ ПЕРЕПИСУВАЛЬНИХ ПРАВИЛ A Дорошенко, K.А. Жереб, Є.М. Туліка .Ю.
  • 2. Мета роботи 2  Автоматичне розпаралелювання програм на мові Фортран  Покращення послідовних програм
  • 3. Актуальність 3  Багато унаслідованого коду  Виникав в ті часи, коли паралелізація була не основним напрямком оптимізації
  • 4. Цільова задача 4  Задача електронної густини  Програма обчислює електронну та спінову густину атомів поліциклічних ароматичних вуглеводнів на прямокутній сітці заданого розміру N
  • 5. Використана техніка 5  Техніка переписувальних правил  Система Termware
  • 6. Як працюють переписувальні 6 правила  source [condition ] -> destination [action]  source – вхідний зразок;  destination – вихідний зразок;  condition – умова, що визначає застосовність правила;  action – дія, виконувана при спрацьовуванні правила.
  • 8. Генерація термів з коду на Фортрані 8  Використано компілятор GCC  В свому арсеналі має десяток різних мов  Має відкритий код
  • 9. Методологія генерації термів 9  Перетворюємо програму на фортрані в проміжне представлення GCC GENERIC  З проміжного представлення генеруємо терм
  • 10. Generic представлення 10  gcc --fdump-tree-original-raw exits (integer(kind=4) & restrict k) @1 function_decl name: @2 mngl: @3 type: @4 scpe: @5 srcp: ElDen.for:1294 args: @6 link: extern body: @7 @2 identifier_node strg: exits lngt: 5 @3 identifier_node strg: exits_ lngt: 6 @4 function_type size: @8 algn: 8 retn: @9 prms: @10 @5 translation_unit_decl @6 parm_decl name: @11 type: @12 scpe: @1 srcp: ElDen.for:1294 argt: @12 size: @13 algn: 64 used: 1 @7 bind_expr type: @9 vars: @14 body: @15 …
  • 11. Синтаксична модель програми 11 function_decl ( args(parm_decl (Еук identifier(node1), identifier(node6), name(identifier_node ( name(identifier_node ( strg(k), strg(exits), lngt(1) lngt(5) )), )), argt(2), algn(64), mngl(identifier_node ( used(1) strg(exits_), )), lngt(6) body(bind_expr (...)) ) )), type(),
  • 12. Розпаралелювання 12  Do Cnt($va r,$s ta rt,$e nd , $bo d y ,_M RK_Pa ra lle l)-> A Pa ra lle lDo Cnt($va r,$s ta rt,$e nd ,$bo d y )
  • 13. Вибір циклів для перетворення 13  В коді 54 цикли  DO IB=1,NZ  Використовуємо профілювання  DO KD=1,NY для знаходження найбільш  DO … критичних фрагментів  CALL  Знаходимо всі цикли, що містять ELDENS такі фрагменти  6 циклів  PROCEDURE ELDENS  Вибрано другий ззовні цикл  DO …  DO …  DO  <hotspot>
  • 14. Знаходження циклів 14 1. [_MarkHotspot($x):$y] -> _MarkHotspot([$x:$y]) 2. [$x:_MarkHotspot($y)] -> _MarkHotspot([$x:$y]) DoCnt($var,$start,$end, _MarkHotspot($body)] -> _MarkHotspot(DoCnt($var,$start,$end,$body, _MARK_CAND_PARALLEL)) 3. Function($name, $params, $return,_MarkHotspot($body)) -> Function($name,$params,$return,$body, _MARK_PASSED) 4. [addItem($name)] Call($name,$params) [hasItem($name)] -> _MarkHotspot(Call($name,$params))
  • 15. Генерація коду програми з терму 15  Терм розбивається на окремі лексеми  Лексеми додаються до дерева синтаксису  Код програми будується на основі синтаксичного дерева
  • 16. Порівняння ефективності 16  Прискорення 3,3-3,6 разів на 4 ядрах
  • 17. Висновки 17  Побудовано методологію розпаралелення программ  Побудовано прикладні засоби розпаралелення і протестовано на цільовій задачі  Подальша робота включає поширення підходу на випадо розподілених і гетерогенних архітектур

Notas del editor

  1. Обсяг програми складає 1680 рядків коду. В коді програми присутні конструкції, характерні для різних версій мови Фортран – від Фортрану 77 до Фортрану 95