Programowanie równoległe

Wykład dla V roku informatyki dziennej, spec. Projektowanie i programowanie systemów informatycznych (15 godz.)

Terminy wykładów: 1.10.07, 5.11.07, 12.11.07, 3.12.07, 10.12.07 (poniedziałki)

Miejsce i czas: sala FII, godz. 10:15-13 

Program wykładu

Lp. Tematy Godz.
1. Potrzeba obliczeń wysokowydajnych, dziedziny zastosowań. Idea obliczeń równoległych 0.5
2. Klasyfikacja komputerów wg Flynna, podział komputerów wieloprocesorowych ze względu na pamięć. Programowanie komputerów z pamięcią wspólną vs programowanie komputerów z pamięcią rozproszoną (wady i zalety). 0.5
3. Równoległość wewnątrz procesora: potokowość i wektorowość. Wykorzystanie hierarchii pamięci. Podstawowe podprogramy algebry liniowej (BLAS i ATLAS). Algorytmy blokowe i LAPACK. Nowe struktury danych dla efektywnego wykorzystania pamięci podręcznej. 1
4. Metody konstrukcji efektywnych algorytmów równoległych przy użyciu BLAS-u: metoda Choleskiego (case study), blokowe wersje eliminacji Gaussa. Algorytmy divide-and-conquer rozwiązywania układów równań liniowych o macierzach pasmowych. Obliczenia rekurencyjne. 2
5. Programowanie komputerów z pamięcią rozproszoną przy użyciu MPI. Proste programy typu SPMD - kompilacja i uruchamianie. Tryby komunikacji w MPI. Kolektywna komunikacja. Zaawansowane wykorzystanie komunikatorów i topologii. Przykłady bardziej zaawansowanych programów SPMD. Metody dystrybucji danych dla obliczeń na komputerach z pamięcią rozproszoną. Język programowania Unified Parallel C. 5
6. Modele i metody analizy programów równoległych i ograniczenia równoległości. Prawo Amdahla. Model Gustafsona. Model Hockney'a-Jesshope'a obliczeń wektorowych. Zastosowanie modeli do predykcji czasu wykonania algorytmów oraz poszukiwania algorytmów optymalnych. Uniwersalny model BSP obliczeń równoległych. 2
7. Programowanie komputerów z pamięcią wspólną: standard OpenMP. Konstrukcje specyfikujące równoległość obliczeń. Zrównoleglanie pętli i nieregularnych obszarów kodu. Konstrukcje umożliwiające synchronizację i tworzenie sekcji krytycznych. 3
8. Przykłady efektywnych podejść do rozwiązywania problemów obliczeniowych. Wykorzystanie bibliotek BLACS, PBLAS i ScaLAPACK do szybkiego tworzenia wydajnych aplikacji. Przyszłość: GRID i obliczenia heterogeniczne. 1

Literatura

  1. R. Bisseling, Parallel Scientific Computation: A Structured Approach using BSP and MPI, Oxford University Press, March 2004.
  2. J. Dongarra, I. Duff, D. Sorensen, H. van der Vorst, Solving Linear Systems on Vector and Shared Memory Computers, SIAM 1991.
  3. Marcin Paprzycki, Przemysław Stpiczyński: A Brief Introduction to Parallel Computing. In: E. J. Kontoghiorghes (ed.), Handbook of Parallel Computing and Statistics, Taylor and Francis, Boca Raton, FL, 3-41 (2006)
  4. BLAS (Basic Linear Algebra Subprograms) & Automatically Tuned Linear Algebra Software (ATLAS)
  5. CLAPACK (f2c'ed version of LAPACK)
  6. Rohit Chandra et al.: Parallel Programming in OpenMP, Morgan Kaufmann (2000) - książka dostępna w bibliotece Instytutu Matematyki UMCS
  7. OpenMP API Version 2.5 (PDF format)
  8. Peter S. Pacheco: A User’s Guide to MPI
  9. UPC Language Specification, v1.2, including UPC collectives and UPC-IO libraries


Materiały

Oprogramowanie