COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface. Wprowadzenie do systemów wieloprocesorowych

Podobne dokumenty
16. Taksonomia Flynn'a.

Nowoczesne technologie przetwarzania informacji

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Architektura mikroprocesorów TEO 2009/2010

Podstawy Techniki Mikroprocesorowej wykład 13: MIMD. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Architektura von Neumanna

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż.

dr inż. Jarosław Forenc

Podstawy Informatyki Systemy sterowane przepływem argumentów

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Obliczenia Wysokiej Wydajności

Systemy wieloprocesorowe i wielokomputerowe

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

Przetwarzanie potokowe pipelining

Programowanie procesorów graficznych GPGPU

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Architektura komputerów

Programowanie współbieżne i rozproszone

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Architektura Komputerów

Numeryczna algebra liniowa

Programowanie współbieżne Wykład 2. Iwona Kochańska

Przetwarzanie Równoległe i Rozproszone

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

3.Przeglądarchitektur

Architektura komputerów

3.Przeglądarchitektur

Programowanie Rozproszone i Równoległe

Algorytmy dla maszyny PRAM

Tesla. Architektura Fermi

Architektura komputerów

Algorytmy i Struktury Danych

Co to jest lista top500. Omów mikrotechnologię Core

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Klasyfikacja systemów komputerowych. Architektura von Neumanna. dr inż. Jarosław Forenc

Dr inż. hab. Siergiej Fialko, IF-PK,

Mikroprocesory rodziny INTEL 80x86

dr inż. Jarosław Forenc

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Witold Komorowski: RISC. Witold Komorowski, dr inż.

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

Programowanie Niskopoziomowe

PR sprzęt (systemy z pamięcią współdzieloną) Rafał Walkowiak Wersja: jesień 2016

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Projektowanie. Projektowanie mikroprocesorów

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

OWS1 (systemy z pamięcią współdzieloną) Rafał Walkowiak Wersja: wiosna 2016

1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH

Przetwarzanie równoległesprzęt

Metody optymalizacji soft-procesorów NIOS

Architektura von Neumanna. Jak zbudowany jest współczesny komputer? Schemat architektury typowego PC-ta. Architektura PC wersja techniczna

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Systemy wieloprocesorowe i wielokomputerowe

Architektura Systemów Komputerowych. Architektura potokowa Klasyfikacja architektur równoległych

MMX i SSE. Zbigniew Koza. Wydział Fizyki i Astronomii Uniwersytet Wrocławski. Wrocław, 10 marca Zbigniew Koza (WFiA UWr) MMX i SSE 1 / 16

Programowanie w asemblerze Architektury równoległe

Obliczenia Wysokiej Wydajności

Architektury Komputerów. Tomasz Dziubich p.530, konsultacje czwartek i 11-12, dziubich@eti.pg.gda.pl

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Przetwarzanie Rozproszone i Równoległe

Sprzęt czyli architektury systemów równoległych

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

System obliczeniowy laboratorium oraz. mnożenia macierzy

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Analiza ilościowa w przetwarzaniu równoległym

Wykład 2 Podstawowe pojęcia systemów równoległych, modele równoległości, wydajność obliczeniowa, prawo Amdahla/Gustafsona

SSE (Streaming SIMD Extensions)

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Komputery równoległe. Zbigniew Koza. Wrocław, 2012

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

Alternatywne modele programowania równoległego

dr inż. Jarosław Forenc

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Wstęp. Przetwarzanie współbieżne, równoległe i rozproszone

OWS1 (systemy z pamięcią współdzieloną) Rafał Walkowiak Wersja: wiosna 2017

OWS1 (systemy z pamięcią współdzieloną) Rafał Walkowiak Wersja: wiosna 2017

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Oprogramowanie komputerów wer. 9

Introduction to Computer Science

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Budowa Mikrokomputera

Analiza efektywności przetwarzania współbieżnego

dr inż. Jarosław Forenc

Transkrypt:

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface Wprowadzenie do systemów wieloprocesorowych

Wstęp Do tej pory mówiliśmy głównie o systemach z jednym procesorem Coraz trudniej wycisnąć więcej z pojedynczego procesora (ograniczenia fizyczne) Aby uzyskać większą wydajność musimy myśleć o systemach z wieloma procesorami Obecnie większość maszyn (serwery, PC, laptopy, konsole, nawet telefony komórkowe) ma wiele procesorów Duże zróżnicowanie systemów wieloprocesorowych (od układów dwurdzeniowych do układów z tysiącami procesorów)

Wstęp Urównoleglanie różnych operacji już widzialiśmy: Carry-select adder, array multiplier Przetwarzanie potokowe Przetwarzanie superskalarne VLIW (very large instruction word)

Wstęp Cel: połączyć wiele CPU w celu uzyskania większej wydajności: Multiprocessors Skalowalność, Uproszczenie budowy pojedynczego CPU Zużycie energii Równoległość na poziomie niezależnych zadań (procesów) Równoległe wykonanie pojedynczego zadania na wielu procesorach Chapter 6 Parallel Processors from Client to Cloud 4

Hardware i Software Hardware serial: np. Intel Pentium 4 parallel: np. Intel Core i7 Software sequential: np. eliminacja Gaussa concurrent: e.g., operating system Sequential/concurrent software może działać na on serial/parallel hardware Challenge: efektywnie wykorzystać równoległy hardware Chapter 6 Parallel Processors from Client to Cloud 5

Programowanie równoległe Pisanie efektywnego oprogramowania równoległego nie jest łatwe Problemy: Podział zadania na części Koorydancje wykonania Komunikacja Chapter 6 Parallel Processors from Client to Cloud 6

Prawo Amdahl a Część zadania może mieć charakter sekwencyjny i nie daje się urównoleglić Przykład: 100 procesorów, 90 speedup? Tnew = T parallelizable /100 + T sequential Speedup (1 F parallelizable 1 ) F parallelizable /100 90 Fparallelizable = 0.999 Sekwencyjna część zadania nie może zająć więcej niż 0.1% oryginalnego czasu Chapter 6 Parallel Processors from Client to Cloud 7

Skalowalność: przykład Zadanie: suma 10 skalarów, oraz suma dwóch macierzy 10 10 1, 10, 100 procesorów 1 procesor: Time = (10 + 100) t add 10 procesorów Time = 10 tadd + 100/10 t add = 20 t add Speedup = 110/20 = 5.5 (55% of optymalnego) 100 procesorów Time = 10 tadd + 100/100 t add = 11 t add Speedup = 110/11 = 10 (10% optymalnego) Zakładamy, że dane mogą być równomiernie przydzielone do procesorów Chapter 6 Parallel Processors from Client to Cloud 8

Skalowalność: przykład cd Co jeśli rozmiar macierzy jest 100 100? 1 processor: Time = (10 + 10000) t add 10 procesorów Time = 10 tadd + 10000/10 t add = 1010 t add Speedup = 10010/1010 = 9.9 (99% of potential) 100 procesorów Time = 10 tadd + 10000/100 t add = 110 t add Speedup = 10010/110 = 91 (91% of potential) Chapter 6 Parallel Processors from Client to Cloud 9

Silna i słaba skalowalność Silna skalowalność: stały rozmiar problemu Słaba skalowalność: rozmiar problemu proporcjonalny do liczby procesorów 10 procesorów, macierz 10 10 Time = 20 tadd 100 procesorów, macierz 32 32 Time = 10 tadd + 1000/100 t add = 20 t add Stała efektywność Chapter 6 Parallel Processors from Client to Cloud 10

Teoria algoryt. równoległych Istnieją teoretyczne modele obliczeń równoległych (PRAM) Klasa problemów dobrze się,,urównoleglających'': NC (rozwiązywalne w czasie polilogarytmicznym na wielominowej liczbie procesorów) Status NC=P? podobny do P=NP? W NC: mnożenie macierzy, sortowanie P-zupełne: circuit value, linear programming Chapter 6 Parallel Processors from Client to Cloud 11

Strumienie instrukcji i danych Klasyfikacja Flynn'a (1960s) Data Streams Single Multiple Instruction Streams Single SISD: Intel Pentium 4 SIMD: SSE instructions of x86 Multiple MISD: No examples today MIMD: Intel Core I7 Chapter 6 Parallel Processors from Client to Cloud 12

SIMD Operują na wektorach danych Np., rozszerzenia MMX, SSE, AVX architektury x86 Procesory wykonują tą samą instrukcję Ale na innych danych Prosta synchonizacja Dobre do zastosowań,,data-parallel'' Chapter 6 Parallel Processors from Client to Cloud 13

Przykład: DAXPY (Y = a X + Y) Standardowy kod MIPS: l.d $f0,a($sp) ;load scalar a addiu r4,$s0,#512 ;upper bound of what to load loop: l.d $f2,0($s0) ;load x(i) mul.d $f2,$f2,$f0 ;a x(i) l.d $f4,0($s1) ;load y(i) add.d $f4,$f4,$f2 ;a x(i) + y(i) s.d $f4,0($s1) ;store into y(i) addiu $s0,$s0,#8 ;increment index to x addiu $s1,$s1,#8 ;increment index to y subu $t0,r4,$s0 ;compute bound bne $t0,$zero,loop ;check if done Kod na wektorową wersję MIPS: l.d $f0,a($sp) ;load scalar a lv $v1,0($s0) ;load vector x mulvs.d $v2,$v1,$f0 ;vector-scalar multiply lv $v3,0($s1) ;load vector y addv.d $v4,$v2,$v3 ;add y to product sv $v4,0($s1) ;store the result Chapter 6 Parallel Processors from Client to Cloud 14

Procesory wektorowe Silnie potokowe jednostki wykonawcze Dane przesyłane z rejestrów wektorowych do jednostek wykonawczych Pobierane z pamięci do rejestrów Zapisywane z rejestrów do pamięci Przykład: Wektorowe rozszerzenie MIPS 32 wektory 64-elementowe (elementy 64-bitowe) Instrukcje wektorowe lv, sv: load/store wektor addv.d: dodaj wektory addvs.d: dodaj skalar do każdego elementu wektora Mała liczba pobieranych instrukcji Chapter 6 Parallel Processors from Client to Cloud 15

Wektorowe kontra skalarne Architektura wektorawa: Ułatwia pisanie programów,,data-parallel'' Krótsze pętle (lub ich brak) brak hazardów sterowania Mniej hazardów danych Przy regularnym wzorze dostępów zysk z pamięci z przeplotem (interleaved) Ogólniejsza niż multimedia extensions (jak MMX, SSE) Lepiej zgrywają się z kompilatorami Chapter 6 Parallel Processors from Client to Cloud 16

Wektorowe kontra MMX, SSE Rozkazy wektorowe operują na wektorach różnej długości, rozszerzenia multimedialne: stałej Rozkazy wektorowe mogą tworzyć wektory,,z co którejś danej w pamięci''; MMX z kolejnych Jednostki wektorowe mogą być kombinacją jednostek potokowych i macierzowych Chapter 6 Parallel Processors from Client to Cloud 17

Wielowątkowość Wiele wątków procesu wykonywanych równolegle Zdublowane rejestry, PC,... Szybkie przełączanie między wątkami Fine-grain multithreading Przełącznie po każdym cyklu Przeplot rozkazów Jeśli jeden wątek czeka pozostałe działają Coarse-grain multithreading Przełączamy wątki przy długich przestojach (np. chybieniach w cache L2) Prostszy sprzęt, ale nie ukrywa krótszych przestojów (np. związanych z hazardami danych) Chapter 6 Parallel Processors from Client to Cloud 18

Simultaneous Multithreading Dotyczy procesorów superskalarnych z dynamicznym przydziałem Przydzielamy istrukcje z różnych wątków jednocześnie O ile są wolne jednostki wykonawcze Przykład: Intel Pentium-4 HT Dwa wątki: zdublowane rejestry, współdzielone jednostki wykonawcze i cache Chapter 6 Parallel Processors from Client to Cloud 19

Multithreading - przykład Chapter 6 Parallel Processors from Client to Cloud 20

MIMD: współdzielona pamięć SMP: shared memory multiprocessor Wspólna przestrzeń adresowa dla wszystkich procesorów Komunikacja za pomocą współdzielonych zmiennych I specjalnych rozkazów synchronizujących Dwa warianty, w zależności od rodzaju dostępu do pamięci: UMA (uniform) vs. NUMA (nonuniform) Chapter 6 Parallel Processors from Client to Cloud 21

Przykład: Sumowanie Sumujemy 100,000 liczb na 100 proc. UMA Każdy procesor ma ID: 0 Pn 99 Przydzialemy 1000 liczb każdemu procesorowi Każdy procesor sumuje swoje liczby: sum[pn] = 0; for (i = 1000*Pn; i < 1000*(Pn+1); i = i + 1) sum[pn] = sum[pn] + A[i]; Dodajemy te częściowe sumy Stragegia dziel i zwyciężaj Połowa procesorów sumuje wyniki z par procesorów, potem działa jedna czwarta procesorów itd. Potrzebna synchronizacja Chapter 6 Parallel Processors from Client to Cloud 22

Przykład: sumowanie half = 100; repeat synch(); if (half%2!= 0 && Pn == 0) sum[0] = sum[0] + sum[half-1]; /* Conditional sum needed when half is odd; Processor0 gets missing element */ half = half/2; /* dividing line on who sums */ if (Pn < half) sum[pn] = sum[pn] + sum[pn+half]; until (half == 1); Chapter 6 Parallel Processors from Client to Cloud 23

Grafika w systemie komp. Chapter 6 Parallel Processors from Client to Cloud 24

Architektury GPU Przetwarzanie typu,,data-parallel'' GPUs są silnie wielowątkowe Przełączanie wątków pozwala ukryć opóźnienie spowodowane dostępem do pamięci Mniejsza rola cache Pamięć grafiki szeroka, duża przepustowość Trend: użycie GPUs do innych zadań Heterogeniczny system CPU/GPU CPU zadanie sekwencyjne, GPU - równoległe Środowiska programistyczne i języki: DirectX, OpenGL C for Graphics (Cg), High Level Shader Language (HLSL) Compute Unified Device Architecture (CUDA) Chapter 6 Parallel Processors from Client to Cloud 25

MIMD: komunikacja sieciowa Każdy procesor ma prywatną przestrzeń adresową Komunikacja za pomocą wiadomości przesyłanych siecią Chapter 6 Parallel Processors from Client to Cloud 26

Loosely Coupled Clusters Sieć niezależnych komputerów Każdy z pamięcią prywatną i własnymos Połączenia za pomocą I/O Np., Ethernet/switch, Internet Dobre do zastosowań z niezależnymi zadaniami Serwery WWW, bazy danych, symulacje, Łatwo dostępne, skalowalne, niedrogie Problemy Koszt zarządzania Mała przepustowość komunikacji Chapter 6 Parallel Processors from Client to Cloud 27

Sumowanie raz jeszcze Sumujemy 100,000 liczb na 100 proc. Rozsyłamy po 1000 liczb Wyliczamy sumy częściowe sum = 0; for (i = 0; i<1000; i = i + 1) sum = sum + AN[i]; Składanie wyniku Połowa procesorów wysyła, połowa odbiera dodaje Jedna czwarta wysyła, jedna czwarta odbiera i dodaje, Chapter 6 Parallel Processors from Client to Cloud 28

Sumowanie raz jeszcze Mamy operacje send(), receive() limit = 100; half = 100;/* 100 processors */ repeat half = (half+1)/2; /* send vs. receive dividing line */ if (Pn >= half && Pn < limit) send(pn - half, sum); if (Pn < (limit/2)) sum = sum + receive(); limit = half; /* upper limit of senders */ until (half == 1); /* exit with final sum */ Send/receive zapewniają synchronizację Chapter 6 Parallel Processors from Client to Cloud 29

Grid Computing Samodzielne maszyny połączone np. za pomocą internetu Np. SETI@home Chapter 6 Parallel Processors from Client to Cloud 30