Obliczenia równoległe

Obliczenia równoległe – forma wykonywania obliczeń, w której wiele instrukcji jest wykonywanych jednocześnie. Taka forma przetwarzania danych była wykorzystywana przez wiele lat, głównie przy wykorzystaniu superkomputerów, a szczególne znaczenie zyskała z uwagi na fizyczne ograniczenia uniemożliwiające dalsze zwiększanie częstotliwości taktowania procesorów. Obliczenia równoległe stały się dominującym wzorcem w architekturze komputerowej, głównie za sprawą upowszechnienia procesorów wielordzeniowych.
Ze względu na skalę można wyróżnić obliczenia równoległe na poziomie:
Ze względu na poziom, na którym sprzęt wspomaga operacje równoległe, można wyróżnić komputery:
Do prowadzenia obliczeń równoległych, oprócz sprzętu, konieczne są również odpowiednie algorytmy nazywane równoległymi. Są one trudniejsze w implementacji niż sekwencyjne, ponieważ współbieżność wprowadza dodatkowe możliwości popełnienia błędu. Powstają również dodatkowe problemy w uzyskaniu wysokiej wydajności z powodu dodatkowych nakładów na komunikację i konieczność synchronizacji obliczeń.

context: Wyodrębnienie tych niezależnych części jest kluczowe w implementacji algorytmów równoległych. Żaden program nie może być wykonany szybciej niż najdłuższy łańcuch zależnych od siebie obliczeń (znanych jako ścieżka krytyczna), ponieważ obliczenia, które są zależne od poprzednich obliczeń w łańcuchu, muszą być wykonywane po sobie. Jednak większość algorytmów nie składa się tylko z długich łańcuchów zależnych od siebie obliczeń; najczęściej pojawia się możliwość wykonania niezależnych obliczeń równolegle.
qas: question: Co ogranicza szybkość danego programu?
answers: text: najdłuższy łańcuch zależnych od siebie obliczeń
generative_answer: najdłuższy łańcuch zależnych od siebie obliczeń

question: Dlaczego szybkość danego programu nie może być niższa niż szybkość pewnego jej fragmentu?
answers: text: ponieważ obliczenia, które są zależne od poprzednich obliczeń w łańcuchu, muszą być wykonywane po sobie
generative_answer: ponieważ obliczenia, które są zależne od poprzednich obliczeń w łańcuchu, muszą być wykonywane po sobie

question: Czy obliczenia w ramach ścieżki krytycznej mogą być wykonywane równolegle?
answers: text: Jednak większość algorytmów nie składa się tylko z długich łańcuchów zależnych od siebie obliczeń; najczęściej pojawia się możliwość wykonania niezależnych obliczeń równolegle
generative_answer: nie

question: Jakim terminem można określić łańcuch ograniczający szybkość danego programu?
answers: text: ścieżka krytyczna
generative_answer: ścieżka krytyczna

context: W celu poprawy wydajności systemu komputerowego stosuje się niewielkie, ale szybkie pamięci podręczne (ang. cache memory), które mogą przechowywać tymczasowe dane. Stosowanie ich w architekturach równoległych nastręcza problemy związane z zachowaniem spójności danych (ang. cache coherency), gdyż te same dane mogą być przechowywane w pamięciach podręcznych różnych procesorów. Zapewnienie poprawności obliczeń wymusza stosowanie dodatkowych technik, z których najpopularniejsza to bus snooping. Mimo ich istnienia projektowanie wydajnych pamięci podręcznych przysparza wiele trudności, dlatego architektury oparte na pamięci dzielonej należą do trudniej skalowalnych niż te oparte na pamięci rozproszonej.
qas: question: Jaki rodzaj pamięci wykorzystuje się, aby zwiększyć wydajność systemu?
answers: text: niewielkie, ale szybkie pamięci podręczne
generative_answer: niewielkie, ale szybkie pamięci podręczne

question: Dlaczego wykorzystywanie pamięci podręcznych w architekturach równoległych może naruszyć spójność danych?
answers: text: te same dane mogą być przechowywane w pamięciach podręcznych różnych procesorów
generative_answer: te same dane mogą być przechowywane w pamięciach podręcznych różnych procesorów

question: Dlaczego architektury opierające się na pamięci rozproszonej są łatwiej skalowalne niż te bazujące na pamięci dzielonej?
answers: text: projektowanie wydajnych pamięci podręcznych przysparza wiele trudności
generative_answer: projektowanie wydajnych pamięci podręcznych przysparza wiele trudności

question: Jak nazywa się najpopularniejsza technika wymuszająca poprawne obliczenia?
answers: text: bus snooping
generative_answer: bus snooping

question: Dlaczego pamięci podręczne są wykorzystywane częściej niż pamięci rozproszone?
plausible_answers: text: mogą przechowywać tymczasowe dane
generative_answer: mogą przechowywać tymczasowe dane