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ń
answer_end: 190
generative_answer: najdłuższy łańcuch zależnych od siebie obliczeń
is_impossible: no

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
answer_end: 328
generative_answer: ponieważ obliczenia, które są zależne od poprzednich obliczeń w łańcuchu, muszą być wykonywane po sobie
is_impossible: no

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
answer_end: 505
generative_answer: nie
is_impossible: no

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

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
answer_end: 101
generative_answer: niewielkie, ale szybkie pamięci podręczne
is_impossible: no

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
answer_end: 376
generative_answer: te same dane mogą być przechowywane w pamięciach podręcznych różnych procesorów
is_impossible: no

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
answer_end: 585
generative_answer: projektowanie wydajnych pamięci podręcznych przysparza wiele trudności
is_impossible: no

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

question: Dlaczego pamięci podręczne są wykorzystywane częściej niż pamięci rozproszone?
is_impossible: yes