Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Optymalizacja kodu na różne architektury
Tok studiów:
2014/2015
Kod:
IIN-1-706-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka
Semestr:
7
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
Paszyński Maciej (paszynsk@agh.edu.pl)
Osoby prowadzące:
Paszyński Maciej (paszynsk@agh.edu.pl)
Krótka charakterystyka modułu

Celem przedmiotu jest przedstawienie metod optymalizacji oprogramownia, minimializacji liczby operacji zmiennoprzecinkowych na sekundę, transferów pamięci i wykorzystania cache’a.

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 Potrafi badać efektywność oprogramowania IN1A_W07 Wykonanie ćwiczeń laboratoryjnych
M_W002 Posiada wiedzę z zakresu architektury procesora konieczną w celu zaprojektowania optymalnego oprogramowania IN1A_W09, IN1A_W04 Wykonanie ćwiczeń laboratoryjnych
M_W003 Posiada wiedzę z zakresu projektowania i implementowania algorytmów automatycznej optymalizacji IN1A_W07 Wykonanie ćwiczeń laboratoryjnych
Umiejętności
M_U001 Potrafi projektować optymalne oprogramowanie na różne architektury maszyn IN1A_U09, IN1A_U07, IN1A_U08, IN1A_U01, IN1A_U12 Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K001 Potrafi współpracować w zespole programistów w celu rozwiązania problemu optymalizacji oprogramowania IN1A_K01 Wykonanie ćwiczeń laboratoryjnych
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 Potrafi badać efektywność oprogramowania + - + - - - - - - - -
M_W002 Posiada wiedzę z zakresu architektury procesora konieczną w celu zaprojektowania optymalnego oprogramowania + - + - - - - - - - -
M_W003 Posiada wiedzę z zakresu projektowania i implementowania algorytmów automatycznej optymalizacji + - + - - - - - - - -
Umiejętności
M_U001 Potrafi projektować optymalne oprogramowanie na różne architektury maszyn + - + - - - - - - - -
Kompetencje społeczne
M_K001 Potrafi współpracować w zespole programistów w celu rozwiązania problemu optymalizacji oprogramowania - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:

1. Przykłady dobrze i źle zaprojektowanego programu z punktu widzenia jego efektywności (2h)
2. Czas działania programu a liczba operacji zmienno-przecinkowych, alokacje pamięci, transfery danych pomiędzy różnymi poziomami pamięci, utylizacja cache’u, przesyłanie komunikatów pomiędzy węzłami klastra linuksowego. Porównywanie efektywności programów. Kwestie optymalizacji zużycia energii (2h)
3. Optymalizacjia oprogramowania poprzez flagi kompilatowa (1h)
4. Modele złożoności pozwalające opisać koszt obliczeniowy, zużycie pamięci, koszt komunikacji. Metody weryfikacji eksperymentalnej zbudowanych modeli (2h)
5. Optymalizacja oprogramowania na procesory wielordzeniowe (2h)
6. Optymalizacja oprogramowania na karty graficzne GPGPU (2h)
7. Automatyczna optymalizacja czasu działania i zużycia energii oprogramowania za pomocą programowania dynamicznego (2h)
8. Przykłady zastosowań (1h)

Ćwiczenia laboratoryjne:

1. Poznają narzędzia i metody badania oprogramowania sekwencyjnego, w tym sposoby mierzenia FLOPs, sposoby mierzenia zużycia pamięci, sposoby mierzenia czasu wykonania poszczególnych fragmentów programu (1h)
2. Poznają narzędzia i metody badania oprogramowania równoległego, w tym sposoby kosztu komunikacji, obciążenia poszczególnych procesorów, sposoby mierzenia zużycia pamięci, sposoby mierzenia czasu wykonania równoległego poszczególnych fragmentów programu (2h)
3. Studenci przeprowadzą szereg eksperytmentów z których wynikać będzie jak flagi kompilatora wpływają na szybkość wykonania oprogramowania (2h)
4. Studenci przeprowadzą szereg eksperymentów z których wynikać będzie jak różne biblioteki i sposób ich kompilacji i linkowania wpływa na efektywność oprogramowania (2h)
5. Studenci zaprojektują struktury danych i algorytmy dostosowane do wymagań architektury konkretnego procesora, w tym związane z optymalnym wykorzystaniem cache’a i transferów pamięci (2h)
6. Studenci zaprojektują algorytmy automatycznej optymalizacji oprogramowania oraz sposoby ich weryfikacji (2h)
7. Studenci przeprowadzą szereg eksperymentów których celem będzie automatyczna optymalizacja oprogramowania (2h)
8. Studenci zbadają dlaczego dwie implementacje tego samego algorytmu mają różny czas działania (1h)

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 75 godz
Punkty ECTS za moduł 3 ECTS
Udział w wykładach 14 godz
Udział w ćwiczeniach laboratoryjnych 14 godz
Samodzielne studiowanie tematyki zajęć 28 godz
Przygotowanie do zajęć 14 godz
Przygotowanie sprawozdania, pracy pisemnej, prezentacji, itp. 5 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

1. Aby uzyskać pozytywną ocenę końcową niezbędne jest uzyskanie pozytywnej oceny z laboratorium.
2. Podczas laboratorium wykonywane są ćwiczenia laboratoryjne związane z optymalizacją i przyspieszeniem programowów w języku C++, wynik każdego laboratorium jest oceniany podczas prowadzącego który weryfikuje poprawność wykonania ćwiczenia (czas działania kodu) oraz zrozumienie tematyki przez studenta.
2. Wyznaczmy ocenę końcową na podstawie zależności:
if sr>4.75 then OK:=5.0 else
if sr>4.25 then OK:=4.5 else
if sr>3.75 then OK:=4.0 else
if sr>3.25 then OK:=3.5 else OK:=3
3. Jeżeli pozytywną ocenę z laboratorium uzyskano w pierwszym terminie oraz ocena końcowa jest mniejsza niż 5.0 to ocena końcowa jest podnoszona o 0.5

Wymagania wstępne i dodatkowe:

Podstawowa znajomość programowania w C/C++, Podstawowan znajomość środowiska Linux

Zalecana literatura i pomoce naukowe:

1. http://www.codeproject/Articles/6154/Writing-Efficient-C-and-C-Code-Optimization
2. http://www.ulaff.net/ rozdział 5.4 (2015)
3. http://wiki.cs.utexas.edu/rvdg/HowToOptimizeGemm (2014)
4. What Every Programmer Should Know About Memory, Ulrich Drepper, Red Hat, Inc.drepper@redhat.com, November 21, 2007
5. Software Optimization Guide for AMD Family 16h Processors, Publication # 52128 Revision: 1.1 Issue Date: March 2013, Advanced Micro Devices
6. CUDA C PROGRAMMING GUIDE, PG-02829-001_v7.0, March 2015

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

1 Maciej Wozniak, Maciej Paszynski, David Pardo, Lisandro Dalcin, Victor Calo, Computational cost of isogeometric multi-frontal solvers on parallel distributed memory machines, Computer Methods in Applied Mechanics and Engineering, 284 (2015) 971-987 (IF:3.049)
2 Maciej Wozniak, Krzysztof Kuznik, Maciej Paszynski, Victor Calo, David Pardo, Computational cost estimates for parallel shared memory isogeometric multi-frontal solvers, Computers and Mathematics with Applications, 67(10) (2014) 1864-1883 (IF:2.062)
3 Anna Paszynska, Maciej Paszynski, Konrad Jopek, Maciej Wozniak, Damian Goik, Piotr Gurgul, Hassan AbouEisha, Mikhail Moshkov, Victor Calo, Andrew Lenharth, Donald Nguyen, Keshav Pingali, Quasi-Optimal Elimination Trees for 2D Grids with singularities Scientiffic Programming (2015) Article ID 303024, 1-18. (IF: 0.667)
4 Maciej Paszynski, David Pardo, Victor Calo, Direct solver performance on h-adapted grids, Computers and Mathematics with Applications (2015) (IF:2.062) in press.
5 Hassan AbbouEisha, Mikhail Moshkov, Konrad Jopek, Pawel Gepner, Jacek Kitowski, Maciej Paszynski, Towards green multi-frontal solver for adaptive finite element method, Procedia Computer Science (2015) 51, 984-993

Informacje dodatkowe:

Brak