Inovativní python workflow framework pro vědecké simulace

Nabídka témat pro studentské práce

Klíčová slova

  • Workflow framework
  • Python
  • Kombinování programovacích jazyků
  • Teorie grafů
  • Optimalizace spouštění závislých procesů
  • Aplikace ve vědě

Motivace

Vědecké simulace složitých systémů vyžadují sofistikovaný, modulární přístup. Jednotlivé moduly mohou představovat jednak reálně oddělené součásti řešeného problému, které spolu interagují (např. model zdroje vyzařování a model detektoru), mohou ale také představovat procesy jednoho systému, které jsou popsány různými rovnicemi a veličinami a které jsou spolu netriviálně provázané. Takovým problémem jsou např. integrované (transportní) simulace fyziky plazmatu v tokamacích, kde je potřeba konzistentně simulovat různorodé procesy na různých časových a prostorových škálách. Tyto procesy a pochopitelně i jejich simulace mohou být samy o sobě velice komplikované. Implementace simulací s takovýmito vlastnostmi pochopitelně kladou vysoké nároky na softwarové nástroje. Velice vhodnou možností jsou workflow systémy, které jsou poměrně hojně využívány v různých vědních oborech. Pro simulace tokamaků vznikl projekt ITM (Integrated Tokamak Modelling), který využívá workflow systému Kepler. Technické řešení ITM je ale bohužel z několika hledisek nevyhovující. Rozhodli jsme se proto vytvořit inovativní workflow framework, který umožní efektivní přístup ke komplexním problémům integrovaného modelování. Primárním jazykem byl zvolen Python kvůli jeho unikátní kombinaci výhodných vlastností. Pro vědecké účely jsou výborně integrovány numerické knihovny a existují široké možnosti vizualizace. Python je ale zároveň moderním, dynamickým, především objektově orientovaným jazykem s bohatou vestavěnou knihovnou. V Pythonu lze velice rychle a efektivně vyvíjet nové programy a také integrovat programy v jiných jazycích.

Možnosti pro studenty

Projekt je otevřen studentům informatických oborů, jelikož podstatnou součást projektu tvoří právě informační technologie. Vývoj bude vyžadovat nejen velkou dávku programování (v Pythonu, C/C++, Fortranu a dalších jazycích), ale také výzkum a vývoj sofistikovaných algoritmů pro práci s procesy, jejichž závislosti jsou popsány grafy. Cílem je tyto procesy spouštět paralelně a vyvinout algoritmy, které toto spouštění optimalizují online. Cílová architektura je přitom jak vícejádrový systém tak i cluster nebo grid. Atraktivní je aktivní spolupráce s vědeckou komunitou a tím pádem i přímé použití výsledků v praxi.

Konkrétní témata

1. Dynamické vícejazyčné kontejnery se sdílenou pamětí

Aby mohly být jednotlivé workflow komponenty naprogramovány v různých jazycích a zároveň spolu mohly efektivně komunikovat, je třeba standardizovat datové struktury. Datové struktury by měly být hierarchické (stromy), jejichž uzly mohou být vícerozměrné. Koncové uzly jsou definovány pomocí několika základních typů. Požadavkem je zároveň co nejefektivnější komunikaci potencionálně velkých vícerozměrných polí. Úkolem bude návrh a implementace knihovny, která umožní vybraným jazykům (Python, C/C++, Fortran, Matlab, Java) jednotný přístup k dynamickým kontejnerům typu slovník a vícerozměrné pole. Data polí primitivních typů (float, integer, bool) bude možné uložit do sdílené paměti a umožnit tak přístup k datům z více procesů bez nutnosti jakkoli data kopírovat. Dále bude navržen formát, pravděpodobně s použitím JSON nebo YAML, pro specifikaci datových struktur.

3. Online optimalizace plánování procesů ve workflow

(Toto téma je vhodné na dizertační práci.) Jednou z velkých výhod workflow, konkrétně tedy workflow definovaných pomocí datových toků, je přímočará paralelizace. Jakmile totiž má nějaká komponenta k dispozici potřebná vstupní data, může se spustit nezávisle na stavu ostatních komponent. Pomocí datové paralelizace lze přitom efektivně implementovat až překvapivě mnoho úloh, zvlášť pokud je dostatečně rychlá komunikace (což by měl zajistit přístup popsaný v tématu 1). V závislosti na dostupných prostředcích a požadavcích jednotlivých komponent mohou být komponenty spouštěný na vícejádrovém počítači, klastru, gridu apod. Úlohy mohou mít pochopitelně různé nároky na paměť a výkon. Optimální naplánování spouštění takovýchto úloh, jejichž závislost je popsána obecně cyklickým směrovým grafem, je samozřejmě poměrně komplikovaná. Cílem této práce je nalézt vhodný algoritmus pro co nejoptimálnější online plánování spouštění procesů ve workflow. Existuje několik algoritmů, které obvykle řeší případy acyklických grafů. Navíc není časté, aby algoritmy pracovaly online, tj. během samotného běhu workflow. To přitom může být užitečné pro cyklické workflow, které jsou např. potřeba pro iterace. Online algoritmus může aktualizovat speed-up faktor komponent spouštěných na více procesorech a lépe naplánovat spouštění všech úloh tak, aby celkový čas běhu workflow (případně jednoho cyklu) byl co nejkratší. Je známo, že tento problém je NP-úplný. Cílem tedy nebude algoritmus, který najde globální optimum. Výzkum by měl také vzít v úvahu, že výpočetní prostředky mohou být sdílené a tedy že pro danou úlohu bude k dispozici pouze omezený, potenciálně v čase se měnící počet výpočetních jednotek.

Kontakt

Ing. Jakub Urban, Ph.D.
Ústav fyziky plazmatu AV ČR
Tel: 26605 3564
Email: urban(at)ipp.cas.cz

Bližší informace k tématům 1 a 2 také doc. Ing. Miroslav Virius, CSc. (miroslav.virius(at)fjfi.cvut.cz, 22435 8581) a k tématu 3 doc. Ing. Jaromír Kukal, Ph.D. (jaromir.kukal(at)fjfi.cvut.cz, 22435-8583).

Share