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

Podobne dokumenty
Wstęp. Przetwarzanie równoległe. Krzysztof Banaś Obliczenia równoległe 1

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.

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

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

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

Programowanie współbieżne i rozproszone

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

16. Taksonomia Flynn'a.

Architektura mikroprocesorów TEO 2009/2010

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

Podstawy Informatyki Systemy sterowane przepływem argumentów

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

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

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

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

Architektura Komputerów

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

3.Przeglądarchitektur

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

3.Przeglądarchitektur

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

Algorytmy dla maszyny PRAM

Nowoczesne technologie przetwarzania informacji

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

4. Procesy pojęcia podstawowe

Obliczenia Wysokiej Wydajności

Wprowadzenie do architektury komputerów. Taksonomie architektur Podstawowe typy architektur komputerowych

Architektura komputerów

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

Numeryczna algebra liniowa

Budowa komputera Komputer computer computare

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

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

Programowanie równoległe i rozproszone

Budowa Mikrokomputera

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

4. Procesy pojęcia podstawowe

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

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

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

Programowanie procesorów graficznych GPGPU

Obliczenia Wysokiej Wydajności

4. Procesy pojęcia podstawowe

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

Algorytmy i Struktury Danych

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

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

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

Szablony. Szablony funkcji

Programowanie równoległe i rozproszone

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

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

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

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

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

Podstawy programowania komputerów

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

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

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

System mikroprocesorowy i peryferia. Dariusz Chaberski

Szablony funkcji i klas (templates)

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

Przetwarzanie Równoległe i Rozproszone

Architektura komputerów

Programowanie Rozproszone i Równoległe

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Mikroprocesory rodziny INTEL 80x86

Programowanie w asemblerze Architektury równoległe

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

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

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

Moc płynąca z kart graficznych

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1

i3: internet - infrastruktury - innowacje

Programowanie w języku C++ Podstawowe paradygmaty programowania

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

Programowanie kart graficznych. Sprzęt i obliczenia

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Architektura komputerów

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

Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

Język programowania PASCAL

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

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

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Aplikacje w Javie- wykład 11 Wątki-podstawy

Architektura von Neumanna

Wstęp do programowania 2

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

Wskaźniki. Informatyka

DYNAMICZNE PRZYDZIELANIE PAMIECI

Wydajność obliczeń a architektura procesorów

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Podstawy programowania. Wprowadzenie

Transkrypt:

Wstęp. 1

Cel zajęć Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów równoległych Przedstawienie sprzętu wykorzystywanego do obliczeń równoległych Nauczenie sposobów tworzenia i implementacji algorytmów równoległych Zapoznanie z technikami analizy programów równoległych oraz rozwiązywania pojawiających się w nich problemów programistycznych Przedstawienie wybranych dziedzin zastosowań przetwarzania równoległego oraz występujących tam algorytmów 2

Historia i pojęcia wstępne Przetwarzanie współbieżne realizacja wielu programów (procesów) w taki sposób, że ich trwanie od momentu rozpoczęcia do momentu zakończenia może się na siebie nakładać współbieżność pojawiła się wraz z wielozadaniowymi systemami operacyjnymi (lata 60 te, Multics 1965) i nie wymusza równoległości współbieżność związana jest z szeregiem problemów teoretycznych wynikłych z prób realizacji wielozadaniowych systemów operacyjnych istnieje wiele mechanizmów niskiego poziomu (systemowych) do rozwiązywania problemów współbieżności 3

Procesy Proces: ciąg rozkazów (wątek główny) i ewentualnie inne wątki stos (wątku głównego) przestrzeń adresowa dodatkowe elementy tworzące m.in. kontekst procesu Tworzenie procesu: pid_t fork( void ) int execv(const char *filename, char *const argv []) pid_t wait(pid_t pid, int *status) 4

Tworzenie procesów main(){ pid = fork(); if(pid==0){ wyn = execl(...); // np. execl( /usr/bin/ls, (char *) 0); if(wyn==...)...; } else { wyn = wait(&stan); (if stan==...)...; } } uwaga: zachowanie zmiennych (w tym globalnych) 5

Historia i pojęcia wstępne Obliczenia równoległe: dwa lub więcej procesów (wątków) jednocześnie współpracuje (komunikując się wzajemnie) w celu rozwiązania pojedynczego zadania (najczęściej z określonej dziedziny zastosowań) rozwój związany z powstaniem w latach siedemdziesiątych komputerów równoległych problemy obliczeń równoległych (poza klasycznymi zagadnieniami współbieżności) są najczęściej związane z konkretnymi algorytmami obliczenia równoległe były silnie związane z dziedziną obliczeń wysokiej wydajności (i obliczeniami naukowo technicznymi) dziś, w czasach procesorów wielordzeniowych, programowanie równoległe jest koniecznością przetwarzanie równoległe jest jedynym sposobem wykorzystania pełnej mocy współczesnego sprzętu 6

Motywacja 7

Architektura von Neumanna Program i dane w pamięci komputera Pojedynczy procesor: pobiera rozkaz z pamięci rozkodowuje rozkaz i znajduje adresy argumentów pobiera dane z pamięci wykonuje operacje na danych zapisuje wynik w pamięci 8

Architektura von Neumanna 9

Klasyfikacja Flynna Zwielokrotnienie strumieni przetwarzania rozkazów i danych klasyfikacja Flynna SISD (oryginalna architektura von Neumanna) SIMD jeden strumień rozkazów i wiele strumieni danych MISD wiele strumieni rozkazów i jeden strumień danych nie stosowane w praktyce (nie jest to przetwarzanie potokowe, gdzie różne rozkazy są wykonywane na tym samym egzemplarzu danych, ale w kolejnych chwilach czasu ) MIMD wiele strumieni danych i wiele strumieni rozkazów współczesne systemy komputerowe są złożone, realizują zazwyczaj różne typy przetwarzania, z pojedynczymi elementami odpowiadającymi architekturom SISD, SIMD oraz całością odpowiadającą architekturze MIMD z pamięcią wspólna lub rozproszoną 10

Procesory wielordzeniowe Prawo Moore'a wciąż sprawdzające się w praktyce mówi o podwajaniu liczby tranzystorów w pojedynczym układzie scalonym co 18 miesięcy Wykorzystanie tych możliwości do mnożenia etapów przetwarzania potokowego, liczby jednostek funkcjonalnych pracujących nad jednym strumieniem rozkazów i zwiększania częstości taktowania procesorów doprowadziło do kryzysu związanego z wydzielaniem ciepła Rozwiązaniem tego kryzysu jest wykorzystanie prawa Moore'a do umieszczania w jednym układzie wielu rdzeni (czyli praktycznie niewiele okrojonych procesorów) od początków XXI wieku prawo Moore'a może być tłumaczone jako podwajanie liczby rdzeni w pojedynczym układzie 11

Wydzielanie ciepła przez procesory 12

Kierunki rozwoju procesorów Intel 13

14

Intel Knights Landing 15

Architektura procesora G80 16

ATI FireStream 17

18

19

Po co obliczenia równoległe? Lepsze wykorzystanie dostępnego sprzętu 20

Po co obliczenia równoległe? Zwiększenie maksymalnej mocy obliczeniowej 21

Rodzaje przetwarzania równoległego Równoległość na poziomie: pojedynczego rozkazu (instruction level parallelism ILP) potokowość, superskalarność poza kontrolą programisty, w gestii projektanta procesora sekwencji rozkazów tworzących zadanie (task level parallelism), pętli (loop level parallelism) w gestii programisty i twórców kompilatorów wykorzystanie wątków (thread level parallelism) i procesów rozdział kolejno wykonywanych rozkazów pomiędzy procesory/rdzenie podział zadania obliczeniowego na podzadania, przydział poszczególnych zadań procesorom/rdzeniom programów (job level parallelism) jednoczesne wykonywanie niezależnych programów przez system operacyjny (OS level parallelism) w gestii projektantów systemów komputerowych (m.in. systemów operacyjnych) 22

C/C++/Java/C# itp., itd. (źródło - www.tiobe.com) 23

C/C++/Java/C# itp., itd. C++ programmers and programs benefit from the very expressive templating and overloading features of the language, allowing more abstraction and more code reuse than is available in other languages. However, that template processing and overloading is typically expanded and evaluated in the C++ front end. By the time the rest of the compiler sees the program, it s just a C program. The only unique feature in C++ that remains after the front end is exception handling. All the templating is extremely useful for reducing the number of times you have to write an axpy kernel for different data types (float, double, complex, ), but it doesn t increase your expressivity, that is, it doesn t let you write anything you couldn t have written in a C library, however painfully. Michael Wolfe* *Michael Wolfe has developed compilers for over 35 years in both academia and industry, and is now a PGI compiler engineer at NVIDIA Corporation 24