Platforma Pre Podporu Využitia Výpočtového Výkonu Grafických
Total Page:16
File Type:pdf, Size:1020Kb
ŽILINSKÁ UNIVERZITA V ŽILINE FAKULTA RIADENIA A INFORMATIKY PLATFORMA PRE PODPORU VYUŽITIA VÝPOýTOVÉHO VÝKONU GRAFICKÝCH KARIET V MULTIAGENTOVÝCH SIMULAýNÝCH MODELOCH Dizertaþná práca 28360020143008 Študijný program: Aplikovaná informatika Pracovisko: Fakulta riadenia a informatiky, Katedra dopravných sietí ŠkoliteĐ: doc. Ing. Norbert Adamko, PhD. Žilina, 2014 Ing. Miroslav Mintál Poćakovanie Rád by som sa poćakoval tým, ktorí mi pomáhali poþas štúdia a poskytovali mi cenné rady ku tejto práci. Hlavná vćaka patrí školiteĐovi doc. Ing. Norbertovi Adamkovi, PhD. Tak isto by som chcel poćakovaĢ doc. Ing. ďudmile Jánošíkovej, PhD., za vedenie poþas prvých dvoch rokov štúdia. Ćalej by som rád poćakoval kolegom a priateĐom Ing. Michalov Vargovi, Ing. Anne Kormanovej a Ing. Michalovi Kocifajovi, s ktorými sme poþas nášho spoloþného doktorandského štúdia pracovali na rozširovaní využitia simulácii. Tiež by som sa rád poćakoval mojej rodine, za podporu ktorú mi dávala. Abstrakt Táto práca sa zaoberá rozšírením agentovej architektúry o možnosti využitia výpoþtového výkonu grafických kariet. Pre užívateĐsky komfortné využívanie grafických kariet je vytvorená platforma. Platforma je založená na aplikaþnom rámci OpenCL, þo jej umožĖuje využiĢ široké spektrum grafických kariet, ale aj iné výpoþtové zariadenia, ako napríklad procesory. V práci sú popísané všetky funkcie poskytované platformou, ako automatická inicializácia najvýkonnejšieho výpoþtového zariadenia, automatické kopírovanie dát medzi operaþnou pamäĢou poþítaþa a grafickej karty, spolu s konverziou typov týchto dát do jazyka používaného v OpenCL alebo generovanie þastí kódu. Poskytnuté sú viaceré sériovo vykonávané algoritmy, ale aj paralelné algoritmy optimalizované pre použitie na grafických kartách. Platforma je integrovaná do vybranej agentovej architektúry, þim rozširuje túto architektúru o jednoduché využitie výpoþtového výkonu grafických kariet. Rozšírením architektúry je umožnené vytváraĢ väþšie a zložitejšie modely, ktoré budú môcĢ byĢ vypoþítané za kratší þas. Použitie a overenie platformy je demonštrované na viacerých príkladoch, vrátane použitia v simulaþnom nástroji PedSim. V tomto nástroji sa navrhnutá platforma používa na urýchlenie spracovania dát pred simuláciou, ako aj na výpoþet pohybu chodcov poþas simulácie. Abstract This thesis deals with extension of an agent architecture by option to use computational power of graphics cards. A platform is created for user friendly usage of the cards. This platform is based on OpenCL framework that enables it to exploit a wide spectrum of graphics cards as well as another computational devices, such as processors. The thesis describes all functions provided by the platform, such as automatic initialisation of the most powerful computational device, automatic data copying between standard and graphics card memory, data types conversion into programming language employed in OpenCL and code generation. Multiple serial algorithms and some parallel ones optimised for graphics cards are provided. Platform is integrated into chosen agent architecture and widens its capabilities by simple usage of the computational power of graphics cards. This architecture extension allows the user to create bigger and more complex models with shorter computational time. Application and verification of the platform is demonstrated on several examples including simulation tool PedSim. The proposed platform is here utilised to accelerate the data processing before simulation run and to compute the pedestrians’ movement during the simulation run itself. Obsah 1 Ciele práce ........................................................................................................................... 12 2 Simulácia a druhy simulácii ................................................................................................... 14 2.1 Agentovo orientovaná simulácia....................................................................................... 16 3 Architektúra grafickej karty .................................................................................................. 18 3.1 Hierarchia pamätí grafickej karty ...................................................................................... 19 3.2 Usporiadanie vlákien ........................................................................................................ 21 4 Návrh platformy pre využitie GPU na všeobecné výpoēty ..................................................... 23 4.1 Softvérové rámce využívajúce výpoētový výkon GPU ........................................................ 23 4.1.1 CUDA ............................................................................................................................ 24 4.1.2 OpenCL ......................................................................................................................... 24 4.1.3 DirectCompute ............................................................................................................. 25 4.1.4 Stream .......................................................................................................................... 25 4.2 Porovnanie technológii ..................................................................................................... 25 4.3 Návrh vlastnej platformy .................................................................................................. 27 4.3.1 Inicializácia výpoētového zariadenia ............................................................................. 28 4.3.2 Kernel ........................................................................................................................... 30 Zadávanie algoritmu pre výpoēet .................................................................................. 30 Prenos dát .................................................................................................................... 33 Spustenie výpoētu ........................................................................................................ 37 Zotavenie sa pri chybe v algoritme pre GPU .................................................................. 38 Meranie rýchlosti výpoētu ............................................................................................ 40 4.3.3 Prístup k OpenCL objektom........................................................................................... 40 4.3.4 Knižnice poskytované platformou ................................................................................. 41 Euklid ........................................................................................................................... 41 Prefix scan .................................................................................................................... 41 Triedenie ...................................................................................................................... 44 4.3.5 Popis ēastí platformy .................................................................................................... 47 5 Rozšírenie agentovej architektúry pre využitie výpoētového výkonu grafických kariet .......... 49 5.1 Simulaēné nástroje využívajúce GPU ................................................................................. 49 5.1.1 Simulaēné modely implementované priamo pre GPU ................................................... 49 5.1.2 Simulaēné aplikaēné rámce používajúce GPU ................................................................ 50 5.2 Vybrané agentové architektúry ........................................................................................ 53 5.2.1 Agentová architektúra ABAsim ..................................................................................... 54 5.3 Rozšírenie architektúry ABAsim ........................................................................................ 56 5.3.1 Optimalizácie výpoētu poēas simulácie ......................................................................... 58 Zámena operácii za natívne a jednoduchšie pre GPU .................................................... 58 Optimalizácia využitia pamäte ...................................................................................... 58 Zmena usporiadania vlákien ......................................................................................... 58 Použitie rôznych kernelov na dosiahnutie rovnakého výpoētu ...................................... 59 Optimalizácie podporované platformou........................................................................ 59 5.3.2 Interakcia s BDI ............................................................................................................. 60 5.3.3 Popis ēastí platformy umožŸujúce jej použitie v ABAsim ............................................... 61 6 Praktické použitie a overenie použiteűnosti navrhnutej platformy ........................................ 63 6.1 Sēítanie vektorov .............................................................................................................. 63 6.2 Násobenie matíc............................................................................................................... 68 6.2.1 Výpoēet dynamických agentov ...................................................................................... 73 6.3 Výpoēet pohybu chodcov ................................................................................................. 75 6.4 Automatický výber vhodného kernelu .............................................................................. 78 7 Záver