Multithread programming Java vs. OpenMP Pavel Zavoral Martin Kugler
Abstrakt Porovnání možností vícevláknového programování JVM OpenMP Násobení matic Vytvoření jednotného rozhraní v Javě Jednoduché GUI
Vlákna v Javě Součást standardní knihovny jazyka Implementace v JVM (nezávislá na OS) Explicitní vytváření vláken a synchronizace
OpenMP Knihovna pro C/C++ a Fortran => Java Native Interface JOMP – pokus o implementaci v Javě Vícevláknové programování se sdílenou pamětí pro matematické výpočty Direktivy preprocesoru pro určení paralelních sekcí kódu
Fork-Join model Střídání sekvenčních a paralelních částí Automatické vytváření vláken a synchronizace
Use cases
Scénář Načíst obě matice (uživatel) Zadat metodu výpočtu (uživatel) Spustit počítání (uživatel) Spočítat součin zadanou metodou (aplikace) Zobrazit dobu výpočtu (aplikace) Uložit výsledek (uživatel)
Funkční požadavky Spočítání součinu vybranou metodou Generování náhodné matice Měření doby výpočtu
Nefunkční požadavky Jednotné API v Javě Jednoduché GUI
Diagram nasazení