W1 Flashcards
Jakie są przykłady problemów obliczeniowych dużej skali?
Programowanie zjawisk meteorologicznych i geologicznych, modelowanie i symulacja komputerowa, chemia kwantowa, biologia obliczeniowa, astronomia i astrofizyka, kryptografia, poszukiwanie cywilizacji pozaziemskich (projekt SETI), testowanie broni nuklearnej (program ASCI), geoinformatyka i przetwarzanie danych przestrzennych.
Czym różni się programowanie równoległe od programowania współbieżnego?
Programowanie współbieżne polega na rozwiązywaniu rzeczywistych problemów w sposób współbieżny, w celu lepszego odzwierciedlenia modelowania pracy systemów. Programowanie równoległe dotyczy programowania architektur wieloprocesorowych, gdzie elementów liczących jest więcej niż jeden.
Jakie są przykłady historycznych modeli obliczeniowych?
Mechanizm z Antykithiry (150-100 p.n.e.), Kostki Napiera (1617), Pascalina (1652), Maszyna Analityczna Babbage’a, Colossus Mark II (1941), ENIAC, IBM 360, ZX Spectrum, IBM PC.
Dlaczego obliczenia równoległe są ważne?
Osiągnięcie znacznie większej mocy obliczeniowej było możliwe dzięki wykorzystaniu obliczeń równoległych.
Czym była Maszyna Babbage’a?
Był to pierwszy projekt maszyn obliczeniowej (obliczenia równoległe).
Jakie są kluczowe etapy rozwoju obliczeń współbieżnych?
Lata ‘70 - różne komputery kategorii SIMD, lata ‘80 - superkomputery MIMD z procesorami wektorowymi, lata ‘90 - klastry z węzłami SMP, architektura NUMA, początek XXI - wzrost wydajności typowych procesorów, technologia HT, wczoraj - procesory multicore, obliczenia na kartach graficznych CUDA, dziś - systemy hybrydowe, procesory multicore + urządzenia manycore, jutro - powszechność klastrów z węzłami hybrydowymi, akceleratory.
Jakie problemy wynikają ze wzrostu wartości taktowania procesora?
Problemy z wydzielaniem ciepła i problemy z poborem energii.
Czym charakteryzują się procesory kart graficznych?
Procesory kart graficznych nie zastępują standardowych procesorów, są one bardzo wydajne przy powtarzających się prostych obliczeniach na wielu danych.
Jakie oprogramowanie jest używane do programowania równoległego?
Linux CentOS, Intel Cluster Studio, Intel SDK for OpenCL, PGI Server, NVIDIA CUDA SDK 5.5, netlib, inne pakiety jak LAMMPS, GDAL, Siesta, własne oprogramowanie tworzone w ramach realizowanych projektów badawczych.
Dlaczego programowanie architektur wieloprocesorowych jest trudne?
Ze względu na złożoność i odmienność algorytmów oraz brak uniwersalnych języków programowania pozwalających rozwiązywać dowolny problem.
Jakie są kroki do wykorzystania wielu procesorów lub rdzeni?
Zdefiniuj części programu, które będą wykonywane równolegle, wybierz strategię dekompozycji, wybierz model programowania, napisz program równoległy.
Czym jest model programowania SIMT dla CUDA?
SIMT dla CUDA zakłada: program wykonywany na urządzeniu (zwykle karta graficzna) składa się z wielu wątków grupowanych w bloki, uruchomienie programu następuje z poziomu komputera (hosta), podstawowy kod wątku (kernel) jest funkcją w języku C, wątki w ramach bloku mogą synchronizować swoje działanie i komunikować się poprzez wspólną pamięć, bloki wątków mogą być wykonywane w dowolnym porządku i tworzą sieć (grid).
Jakie są kluczowe zasady efektywnego wykorzystania CPU oraz GPU?
Zadania duże i dające się dobrze zrównoleglić są wykonywane na GPU, zaś zadania mniejsze lepiej wykonywać na CPU, efektywne wykorzystanie GPU wymaga specyficznych technik optymalizacyjnych, stosowanie dostępnych bibliotek ułatwia tworzenie aplikacji wykorzystujących GPU.
Jakie są poziomy optymalizacji kompilatorów?
Optymalizacja maszynowa, lokalna optymalizacja skalarna, globalna optymalizacja skalarna, optymalizacja wektorowa, optymalizacja równoległa.
Czym są SMT i HT w kontekście wielowątkowej współbieżności?
SMT (Simultaneous Multi-Threading) oraz HT (Hyper-Threading) to technologie, gdzie fizyczny procesor jest widziany przez system operacyjny jako zbiór logicznych procesorów, które są przydzielane procesom lub wątkom. Procesory logiczne dzielą zasoby sprzętowe procesora fizycznego.