Cieľom predmetu je poskytnúť študentom znalosti o metódach a prostriedkoch paralelného spracovania s dôrazom na ich využitie pri tvorbe aplikácií. Predmet
umožní študentom získať praktické skúsenosti s návrhom efektívnych paralelných algoritmov pomocou programovacích modelov pre symetrické multiprocesory a počítačové
klastre, osobitná pozornosť bude venovaná programovacím modelom pre mnohojadrové grafické procesory.
Znalosti súvisiace s návrhom a realizáciou sekvenčných algoritmov v programovacom jazyku C/C++ v rozsahu bakalárskeho štúdia.
Podrobné informácie k predmetu
V rámci predmetu existuje predprivavené prostredie, ktoré je možné stiahnuť a používať pre vypracovanie úloh a projektu počas semestra. Využíva sa prostredie editora CodeBlocks.
Je možné používať iný preferovaný editor. Predpísané sú len knižnice pre jednotlivé úlohy, ktoré je potrebné použiť.
Repozitár s prostredím
Cieľ: Vypracovanie synchronizačnej úlohy za použitia knižnice Pthreads.
Odovzdanie: Úloha sa vypracováva na hodine v 5 alebo 6 týždni.
Hodnotenie: 10b (minimum 4b)
Úlohy na cvičenia
Všetky úlohy sú vypracovávané použitím prostriedkov, ktoré ponúka knižnica Pthreads (tvorba vlákien, mutexy, semafóry, podmienené vykonávanie, korektné ukončenie)
Užitočné linky
Cieľ:
Spracujte výpočtovo náročnú úlohy s aplikovaním paralelného spracovania na jej riešenie. Využite paralelné programátorské modely
OpenMP a MPI, a dosiahnuté zrýchlenia porovnajte a komentujte.
Termín:
Prezentácie vypracovaných tém začínajú v 10 týždni. Pre uznanie odovzdania v riadnom termíne musia byť zadania odovzdané do AISu.
Neskoršie odovzdania už podliehajú penalizácií (-2b za každý omeškaný týždeň).
Hodnotenie:
20b (minimum 8b)
Témy
- výber konzultujte s cvičiacim
Ide o štandardné výpočtovo náročné úlohy, ktoré majú svoje riešenia. Tieto existujúce algoritmy sa použijú ako základ aplikácie.
Hodnotí sa zvládnutie zakomponovania vybraných paralelných modelov pre dosiahnutie zrýchlenia.
Poznámky k vypracovaniu
Užitočné linky
Cieľ:
Navrhnutie a spracovanie zaujímavého problému z oblasti paralelného spracovania, jeho spracovanie a predvedenie.
Termín:
Hodnotenie: 20b (minimum 8b)
Návrh zadania projektu
- spísaný stručný a krátky opis témy, ktorú spracujete v rámci projektu. Výber konzultujte s cvičiacim a odovzdajte do AISu.
Možné oblasti projektov - Oblasti prevzaté zo stránky predmetu Pre jednotlivé oblati je uvedených zopár príkladov.
Poznámky k vypracovaniu
Poznámky k vypracovaniu vo dvojiciach
Príprava študentov pre tímovú prácu na projektoch väčšieho rozsahu. Vedieť pracovať v tíme, preukázať schopnosti dorozumieť sa, rozdeliť si úlohy, vytvoriť produkt (jeho časť) zrozumiteľnú a modifikovateľnú pre ostatných. Preukázaním týchto schopností je vytvorenie integrovaného produktu -- výsledku riešenia projektu, ktorý spĺňa požiadavky zadania.
Object-oriented programming is the successor of procedural (structural) programming. Procedural programming describes programs as groups of reusable code units (procedures) which define input and output parameters. Procedural programs consist of procedures, which invoke each other.
The problem with procedural programming is that code reusability is hard and limited – only procedures can be reused and it is hard to make them generic and flexible. There is no easy way to work with abstract data structures with different implementations.
The object-oriented approach relies on the paradigm that each and every program works with data that describes entities (objects or events) from real life. For example: accounting software systems work with invoices, items, warehouses, availabilities, sale orders, etc.
This is how objects came to be. They describe characteristics (properties) and behavior (methods) of such real life entities.
The main advantages and goals of OOP are to make complex software faster to develop and easier to maintain. OOP enables the easy reuse of code by applying simple and widely accepted rules (principles).
SourceJava is not a pure Object oriented language, but a so called "Hybrid" language. For any language to be pure object oriented it must follow these 6 points strictly... 1) It must have full support for Encapsulation and Abstraction 2) It must support Inheritance 3) It must support Polymorphism 4) All predefined types must be Objects 5) All user defined types must be Objects 6) Lastly, all operations performed on objects must be only through methods exposed at the objects. Now, java supports 1, 2, 3 & 5 but fails to support 4 (primitive types) & 6 (String s1 = "ABC" + "A" ;).
IDE
Java Code Conventions
JAVA language
OOP principle