INNE EBOOKI AUTORA
Autor:
Wydawca:
Format:
ibuk
Rozwiązywanie współczesnych problemów naukowych i praktycznych wymaga stosowania komputerów o dużych szybkościach obliczeń, a zapotrzebowanie na coraz większą moc obliczeniową wzrasta. Modele badanych zjawisk i procesów są bowiem coraz bardziej złożone, a przetwarzaniu podlegają coraz większe ilości danych.
Zwiększanie szybkości działania procesorów przez doskonalenie dotychczas stosowanych technologii napotyka ostatnio na trudne do pokonania przeszkody. Odpowiedzią na te ograniczenia są procesory wielordzeniowe, wykonujące obliczenia równoległe. Szybkość obecnych komputerów dzięki równoległej pracy połączonych ze sobą setek tysięcy procesorów jest rzędu biliarda operacji zmiennopozycyjnych na sekundę, a moc ta w przyszłości będzie wzrastać.
Niniejsza książka poświęcona jest zagadnieniom związanym z realizacją obliczeń równoległych, w szczególności koncentrując się na zagadnieniach analizowania, projektowania oraz implementacji programów równoległych. Omawiane są modele obliczeń oraz elementarne algorytmy równoległe, a także metody konstruowania programów równoległych dla komputerów z pamięcią wspólną i rozproszoną. Jest to unikalna pozycja, niemająca konkurencji na polskim rynku publikacji profesjonalnych. Nowe wydanie zostało poprawione i wzbogacone o ćwiczenia pozwalające sprawdzić nabytą wiedzę.
Adresatami książki są głównie studenci kierunków informatycznych uczelni wyższych, z pewnością jednak będzie to cenna pozycja w biblioteczce osób zajmujących się zawodowo obliczeniami równoległymi – programistów, projektantów systemów oraz wszystkich osób zainteresowanych tą tematyką.
Rok wydania | 2013 |
---|---|
Liczba stron | 454 |
Kategoria | Programowanie |
Wydawca | Wydawnictwo Naukowe PWN |
ISBN-13 | 978-83-01-17290-9 |
Numer wydania | 2 |
Język publikacji | polski |
Informacja o sprzedawcy | ePWN sp. z o.o. |
INNE EBOOKI AUTORA
POLECAMY
Ciekawe propozycje
Spis treści
Spis rysunków VIII | |
Spis tabel XVII | |
Wstęp XIX | |
1. Procesy współbieżne | 1 |
1.1. Pojęcia podstawowe | 1 |
1.2. Współbieżność procesów w systemach operacyjnych | 5 |
1.3. Poprawność programu współbieżnego | 7 |
1.4. Wybrane problemy programowania współbieżnego | 9 |
1.4.1. Problem sekcji krytycznej | 10 |
1.4.2. Problem producenta i konsumenta | 13 |
1.4.3. Problem ucztujących filozofów | 17 |
1.4.4. Problem czytelników i pisarzy | 20 |
1.4.5. Monitory | 22 |
1.5. Uwagi do rozdziału | 28 |
1.6. ćwiczenia | 30 |
1.7. Uwagi bibliograficzne | 40 |
2. Podstawowe modele obliczeń równoległych | 42 |
2.1. Model z pamięciąwspólną | 42 |
2.2. Model sieciowy | 49 |
2.3. Porównanie modeli | 57 |
2.4. Uwagi do rozdziału | 67 |
2.5. ćwiczenia | 70 |
2.6. Uwagi bibliograficzne | 74 |
3. Elementarne algorytmy równoległe | 76 |
3.1. Ocena algorytmów równoległych | 76 |
3.2. Prawo Amdahla | 82 |
3.3. Prawo Gustafsona i Barsisa | 84 |
3.4. Miara Karpa i Flatta | 85 |
3.5. Algorytmy dla modelu z pamięcią wspólną | 87 |
3.6. Algorytmy dla modelu sieciowego | 110 |
3.7. Klasy problemów rozwiązywanych równolegle | 121 |
3.8. Uwagi do rozdziału | 125 |
3.9. ćwiczenia | 141 |
3.10. Uwagi bibliograficzne | 148 |
4. Projektowanie algorytmów równoległych | 150 |
4.1. Etapy projektowania | 150 |
4.2. Dekompozycja problemu | 150 |
4.2.1. Ogólna charakterystyka różnych rodzajów dekompozycji | 150 |
4.2.2. Dekompozycja funkcjonalna | 157 |
4.2.3. Dekompozycja danych | 157 |
4.2.4. Dekompozycja rekursywna | 159 |
4.2.5. Dekompozycja eksploracyjna | 162 |
4.2.6. Dekompozycja spekulatywna | 164 |
4.3. Rozdrobnienie obliczeń | 164 |
4.4. Minimalizowanie kosztu algorytmu równoległego | 167 |
4.4.1. Koszt organizacji obliczeń równoległych | 167 |
4.4.2. Obliczenia nadmiarowe | 168 |
4.4.3. Bezczynność procesorów | 168 |
4.4.4. Odwołania do danych wspólnych | 169 |
4.4.5. Nakładanie się obliczeń i komunikacji | 170 |
4.5. Przydzielanie zadań procesorom | 171 |
4.5.1. Równoważenie obciążenia | 171 |
4.5.2. Równoważenie statyczne | 173 |
4.5.3. Równoważenie dynamiczne | 181 |
4.6. Uwagi do rozdziału | 186 |
4.7. ćwiczenia | 193 |
4.8. Uwagi bibliograficzne | 207 |
5. Architektury komputerów równoległych | 208 |
5.1. Klasyfikacja architektur | 208 |
5.2. Komputery macierzowe | 214 |
5.3. Komputery wieloprocesorowe | 216 |
5.3.1. Komputery wieloprocesorowe z pamięcią wspólną | 216 |
5.3.2. Komputery wieloprocesorowe z pamięcią rozproszoną | 217 |
5.3.3. Rozproszona pamięć wspólna | 218 |
5.4. Klastry | 218 |
5.4.1. Klastry multiprocesorów symetrycznych | 219 |
5.4.2. Klastry procesorów wielordzeniowych | 220 |
5.4.3. Klastry komputerów | 220 |
5.4.4. Cechy oraz zastosowania klastrów | 222 |
5.5. Komputery o niekonwencjonalnych architekturach | 224 |
5.5.1. Komputery przepływowe | 224 |
5.5.2. Komputery systoliczne | 233 |
5.6. Sieci połączeń | 235 |
5.6.1. Charakterystyka sieci połączeń | 235 |
5.6.2. Topologie sieci połączeń | 236 |
5.7. Uwagi do rozdziału | 245 |
5.8. ćwiczenia | 248 |
5.9. Uwagi bibliograficzne | 251 |
6. Programowanie równoległe z przesyłaniem wiadomości | 254 |
6.1. Wprowadzenie | 254 |
6.2. Model obliczeń MPI | 255 |
6.3. Minimalne połowienie grafu | 256 |
6.3.1. Kompilacja i wykonanie programu | 260 |
6.3.2. Funkcje MPI_Init oraz MPI_Finalize | 260 |
6.3.3. Funkcje MPI_Comm_rank oraz MPI_Comm_size | 260 |
6.3.4. Funkcje MPI_Send oraz MPI_Recv | 261 |
6.3.5. Komunikacja kolektywna — funkcje MPI_Bcast oraz MPI_Reduce | 265 |
6.4. Sortowanie | 270 |
6.4.1. Tworzenie nowych komunikatorów — funkcja MPI_Comm_split | 270 |
6.4.2. Gromadzenie i rozdzielanie danych — funkcje MPI_Gather i MPI_Scatter | 272 |
6.5. Wyznaczanie liczb pierwszych | 274 |
6.5.1. Funkcja MPI_Gatherv | 275 |
6.5.2. Funkcja MPI_Wtime | 279 |
6.6. Mnożenie macierzy przez wektor | 281 |
6.7. ćwiczenia | 285 |
6.8. Uwagi bibliograficzne | 286 |
7. Programowanie równoległe z użyciem pamięci wspólnej | 287 |
7.1. Wprowadzenie | 287 |
7.2. Model obliczeń OpenMP | 288 |
7.3. Budowanie programu równoległego | 290 |
7.4. Podstawowe konstrukcje | 293 |
7.4.1. Pojęcia konstrukcji i regionu | 293 |
7.4.2. Konstrukcja równoległa | 294 |
7.4.3. Kompilacja i wykonanie programu | 295 |
7.4.4. Konstrukcja iteracyjna | 296 |
7.4.5. Konstrukcja sekcji | 298 |
7.4.6. Konstrukcja pojedynczego wątku | 300 |
7.5. Klauzule | 301 |
7.6. Konstrukcje synchronizacyjne | 311 |
7.7. Konstrukcje zaawansowane | 314 |
7.8. Minimalne połowienie grafu | 315 |
7.9. Sortowanie | 317 |
7.10. Wyznaczanie liczb pierwszych | 321 |
7.11. ćwiczenia | 323 |
7.12. Uwagi bibliograficzne | 325 |
Rozwiązania ćwiczeń | 326 |
Słowniczek terminów | 407 |
Bibliografia | 423 |
Skorowidz | 439 |