skrypt Flashcards
Co to jest potokowość w kontekście architektury komputerów?
Mechanizm, w którym każdy etap wykonywania rozkazu jest realizowany przez oddzielny układ działający równolegle.
Jakie są etapy przetwarzania rozkazu w klasycznym modelu von-Neumanna?
Pobranie rozkazu z pamięci, dekodowanie rozkazu, pobranie potrzebnych argumentów rozkazu, wykonanie rozkazu, umieszczenie wyniku w pamięci/rejestrze.
Czym jest branch prediction?
Wybieranie najbardziej prawdopodobnej gałęzi selekcji w przypadku zależności między rozkazami, np. instrukcje skoku warunkowego.
Na czym polega wektorowość w obliczeniach naukowych?
Zaprojektowano specjalne potoki do realizowania obliczeń na całych wektorach z mechanizmem łańcuchowania potoków.
Czym jest pamięć podręczna (cache memory)?
Niewielka, szybka pamięć między procesorem a pamięcią operacyjną, charakteryzująca się znacznie większą szybkością działania.
Jakie są poziomy pamięci podręcznej w nowoczesnych systemach komputerowych?
Nowoczesne systemy komputerowe mają przynajmniej dwa poziomy pamięci podręcznej.
Co to jest memory interleaving?
Rozmieszczanie danych w ten sposób, że kolejne elementy danych są alokowane w kolejnych bankach pamięci.
Czym są konflikty w dostępie do banków pamięci?
Konflikty w dostępie do banków pamięci mogą spowodować nawet siedmiokrotny wzrost czasu obliczeń.
Jakie są alternatywne sposoby reprezentacji macierzy?
Podział macierzy na bloki, które mogą być rozmieszczone w pamięci podręcznej pierwszego poziomu.
Co to jest MIMD?
Multiple Instruction stream Multiple Data stream - architektura komputerów równoległych.
Czym charakteryzują się komputery z pamięcią wspólną?
Niewielka liczba procesorów, jednolity i szybki dostęp do pamięci, statyczna lub dynamiczna sieć połączeń.
Czym charakteryzują się komputery z pamięcią rozproszoną?
Brak realizowanej fizycznie wspólnej pamięci adresowej, procesory z pamięcią lokalną połączone siecią połączeń.
Co to są procesory wielordzeniowe?
Umieszczenie więcej niż jednego rdzenia w pojedynczym układzie scalonym, logicznie stanowiącego oddzielny procesor.
Czym jest fundamentalny trójkąt w kontekście optymalizacji programów?
Algorytm - sprzęt - kompilatory: konieczność opracowania odpowiednich algorytmów.
Na czym polega optymalizacja maszynowa?
Optymalizacja zależna od architektury komputera, właściwe wykorzystanie architektury oraz specyficznej listy rozkazów procesora.
Na czym polega optymalizacja skalarna?
Optymalizacja niezależna sprzętowo, np. eliminacja nadmiarowych podstawień, propagacja stałych, eliminacja wspólnych części kodu oraz wyrażeń.
Co to jest optymalizacja wektorowa i równoległa?
Największy przyrost wydajności uzyskuje się dzięki optymalizacji wektorowej i równoległej.
Jakie są aspekty tworzenia efektywnych programów na komputery równoległe?
Identyfikacja równoległości obliczeń, wybór strategii dekompozycji programu na części wykonywane równolegle, wybór modelu programowania, styl implementacji równoległości.
Czym jest przyspieszenie w kontekście obliczeń równoległych?
Ile razy szybciej działa program zoptymalizowany na konkretną architekturę.
Na czym polega prawo Amdahla?
Opisuje wpływ optymalizacji fragmentu programu na wydajność obliczeniową.
Czym jest model Gustafsona?
Model zakładający, że w miarę wzrostu zasobów obliczeniowych, zwiększa się rozmiar rozwiązywanych problemów.
Co to jest BLAS i jakie są jego poziomy?
Basic Linear Algebra Subprograms - standard dla podprogramów realizujących podstawowe operacje algebry liniowej. Poziomy: operacje typu wektor-wektor, operacje typu macierz-wektor, operacje typu macierz-macierz.
Czym jest OpenMP?
Standard programowania komputerów z pamięcią wspólną dla języków C/C++ oraz Fortran.
Jak wygląda model wykonania programu w OpenMP?
Program rozpoczyna się realizacją instrukcji pojedynczego wątku głównego. Gdy wystąpi instrukcja specyfikująca region równoległy, tworzona jest grupa działających równolegle wątków.
Na czym polega konstrukcja parallel w OpenMP?
Tworzy grupę wątków. Jeśli wątek master osiągnie dyrektywę parallel, tworzona jest grupa wątków pod warunkiem, że nie występuje klauzula if.
Co to jest MPI i do czego służy?
Program MPI zakłada działanie kilku równoległych procesorów, w szczególności procesorów rozproszonych.
Jak wygląda struktura programu MPI?
W każdym programie musi się znaleźć dyrektywa #include ‘mpi.h’, wywołanie funkcji MPI_Init oraz MPI_Finalize.
Na czym polega komunikacja punkt-punkt w MPI?
Przesyłanie wiadomości między dwoma procesami realizowane przez polecenia MPI_Send oraz MPI_Recv.
Czym są operacje redukcji w MPI?
Funkcja MPI_Reduce umożliwia wykonywanie operacji redukcji, MPI_Allreduce wyniki są scalane i zamieszczane w pamięci każdego procesu.
Co to jest komunikacja grupowa w MPI?
Funkcje MPI_Bcast, MPI_Scatter, MPI_Gather, MPI_Allgather, MPI_Alltoall służą do komunikacji grupowej, rozesłania danych do wszystkich procesów lub zebrania danych ze wszystkich procesów.