Pomiń do głównej zawartości

Opis kursu

Loga projektu

INFORMACJE WPROWADZAJĄCE

Obliczenia wysokiej wydajności (ang. High Performance Computing) są prężnie rozwijającą się dziedziną informatyki, dzięki której możliwym staje się wykonywanie bardzo skomplikowanych obliczeń oraz przetwarzanie bardzo dużych ilości danych.

W trakcie kursu poznasz budowę nowoczesnych systemów komputerowych i nauczysz się mierzyć oraz uzyskiwać jak najwyższą wydajność na dostępnym sprzęcie. Dzięki podstawom języka asembler nauczysz się dokonywać analizy stworzonych programów i poznasz podstawowe techniki optymalizacyjne możliwe zarówno przy optymalizacji ręcznej jak i wspomaganej funkcjami kompilatora. Dzięki uczestnictwie w kursie, poznasz również podstawy języka Nvidia CUDA oraz programowania akceleratorów GPU.

Każdy temat jest omówiony w postaci prezentacji wideo, a dzięki pytaniom kontrolnym utrwalisz sobie zdobyte wiadomości. Zadania programistyczne do samodzielnego wykonania pozwolą wykorzystać zdobytą wiedzę w praktyce.

WYMAGANIA WSTĘPNE

Kurs wymaga średnio zaawansowanej obsługi komputera oraz umiejętności programowania w języku C lub C++. Preferowana jest znajomość systemu operacyjnego Linux, ale nie jest to warunek konieczny. Ponadto, do udziału w kursie potrzebne Ci będzie urządzenie z dostępem do Internetu oraz słuchawki lub głośniki.

GRUPA DOCELOWA

Docelową grupa są studenci lub osoby chcące podnieść swoje kwalifikacje związane z programowaniem niskopoziomowych aplikacji, programowaniem akceleratorów lub optymalizacją kodu. Kurs powinien być interesujący zarówno dla osób zajmujących się zagadnieniami obliczeń inżynieryjnych i naukowo-technicznych jak i dla programistów wysokowydajnych aplikacji wszelakiego zastosowania. Brak tego typu kursów na rynku powoduje, że użytkownicy aplikacji bardzo często skarżą się na poziom ich optymalizacji, a równocześnie nie wykorzystują w pełni potencjału swoich jednostek obliczeniowych (komputerów, laptopów, tabletów, smartphonów itp.).

CEL KURSU

Kurs Obliczenia wysokiej wydajności składa się z czterech modułów:

Wprowadzenie – z modułu tego uczestnik dowie się do czego wykorzystywane są Obliczenia Wysokiej Wydajności oraz jak działa sprzęt do nich wykorzystywany.

Optymalizacja – w module tym są zaprezentowane sposoby poznania oraz polepszania wydajności zarówno sprzętu jak i programów. Uczestnik nabędzie umiejętność dokonywania optymalizacji programów zarówno ręcznej jak i automatycznej.

Przetwarzanie równoległe i rozproszone – w module tym uczestnik pozna najpopularniejsze metody przyśpieszania programów w ramach Obliczeń wysokiej wydajności czyli zrównoleglenie oraz rozproszenie. Z modułu tego uczestnik dowie się również w jaki sposób mierzyć i uzyskiwać wysoką wydajność zrównoleglonych programów.

Akceleratory obliczeń – na przykładzie środowiska Nvidia CUDA uczestnik kursu pozna sposoby programowania akceleratorów opartych o budowę kart graficznych (GPU)

Każdy moduł składa się z szeregu lekcji, w skład których wchodzi wykład, pytania kontrolne oraz zadania do wykonania.

TRYB I CZAS TRWANIA KURSU

Kurs realizowany jest w trybie we własnym tempie, co oznacza, że poszczególne aktywności nie posiadają skonfigurowanych dat udostępnień ani ostatecznych terminów na wykonanie poszczególnych ćwiczeń. Kursanci mogą pracować z materiałami kursowymi według własnego uznania i ukończyć kurs w dowolnym czasie przed datą jego zamknięcia. Edycja kursu otwarta jest przez 3 miesiące, a rekomendowany czas nauki to 4 godziny tygodniowo przez 10 tygodni. Możliwe jest jednak ukończenie kursu nawet w ciągu jednego tygodnia.

WARUNKI ZALICZENIA

W każdym z modułów znajdziesz punktowane pytania sprawdzające zdobytą wiedzę oraz punktowane zadania programistyczne do samodzielnego wykonania.

Aby zaliczyć kurs (i uzyskać potwierdzenie ukończenia), musisz uzyskać wynik końcowej oceny na poziomie co najmniej 40% punktów.

WARUNKI OTRZYMANIA ZAŚWIADCZENIA

Każdy kursant, który ukończy kurs i zgromadzi co najmniej 40% punktów, uzyska dokument potwierdzający. Zaświadczenie jest generowane automatycznie po ukończeniu kursu.

KONSPEKT KURSU

  1. MODUŁ 1 - Wprowadzenie
    1. Wprowadzenie
      1. Cel i zakres kursu
      2. Środowisko testowe
      3. Wymagane biblioteki
      4. Literatura
    2. Wstęp
      1. Wprowadzenie do obliczeń wysokiej wydajności
      2. Podstawowe pojęcia
      3. Historia obliczeń wysokiej wydajności
      4. Sprzęt
    3. Procesory
      1. Procesory
      2. Problemy przetwarzania potokowego
      3. Ewolucja architektury procesorów
      4. Współczesne procesory
    4. Pamięć
      1. Pamięć
      2. Pamięć podręczna
      3. Pamięć w Systemach Hybrydowych
  2. MODUŁ 2 - Optymalizacja
    1. Benchmarki
      1. Miary Wydajności
      2. Benchmarki specjalistyczne
      3. Wydajność procesora
      4. Wydajność Pamięci
    2. Optymalizacja Sekwencyjna
      1. Optymalizacja
      2. Klasyczne techniki optymalizacji
      3. Optymalizacja operacji macierzowych
      4. Kompilatory
      5. Asembler
      6. Podsumowanie
  3. MODUŁ 3 - Przetwarzanie równoległe i rozproszone
    1. Programowanie równoległe
      1. Programowanie równoległe
      2. Dyrektywy
      3. Klauzule
      4. Funkcje biblioteczne
      5. Zadania
      6. Elementy systemu
      7. Wektoryzajca
      8. Uwagi końcowe
    2. Programowanie rozproszone
      1. Programowanie rozproszone
      2. Przesyłanie komunikatów
      3. Operacje grupowe
      4. Typy danych
    3. Wydajność
      1. Wydajność
      2. Analiza zrównoleglenia
  4. MODUŁ 4 - Akceleratory obliczeń
    1. Akceleratory obliczeń
      1. GPU
      2. Nvidia CUDA
      3. Rozszerzenia CUDA
      4. Analiza przypadku
      5. Pamięć
  5. Zakończenie
    1. Podsumowanie
      1. Ankieta ewaluacyjna

KADRA KURSU

Autorem treści merytorycznej kursu oraz prowadzącym kurs jest dr inż. Filip Krużel, zatrudniony na stanowisku adiunkta badawczo-dydaktycznego w Katedrze Informatyki wydziału Informatyki i Telekomunikacji Politechniki Krakowskiej im. Tadeusza Kościuszki w Krakowie. Od wielu lat zajmujący się zagadnieniami związanymi z obliczeniami wysokiej wydajności, programowaniem równoległym oraz akceleratorami obliczeń.

FINANSOWANIE

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach Programu Wiedza Edukacja Rozwój. Projekt realizowany przez Politechnikę Krakowską im. Tadeusza Kościuszki w ramach konkursu Narodowego Centrum Badań i Rozwoju: „Kurs na MOOC” (POWR.03.01.00-IP.08-00-MOC-18). Źródło finansowania: POWER, oś priorytetowa III (Szkolnictwo wyższe dla gospodarki), Działanie 3.1 (Kompetencje w szkolnictwie wyższym).