Architektury wielopotokowe Michał Drobot. Multithreading WielowątkowośćWielowątkowość Umożliwia zwiększenie funkcjonalności, wydajności poprzez równoległe.

Slides:



Advertisements
Podobne prezentacje
Asynchroniczność w Windows 8 Jakub Binkowski. O mnie Jakub Binkowski Lead.NET Developer.
Advertisements

Przygotowała Wiktoria Wiśniewska
rachunkowość zajęcia nr 7
Wirtualna przestrzeń eLearningowa (iCamp case) Jan Kusiak, Anna Danielewska-Tułecka, Dariusz Górka Centrum e-Learningu Akademia Górniczo-Hutnicza.
ZESPÓŁ SZKÓŁ OGÓLNOKSZTAŁCACYCH NR 11 W SOSNOWCU PODSUMOWANIE ANKIETY DLA RODZICÓW.
CZAS W PÓŹNEJ NOWOCZESNOŚCI Problem czasu wolnego w kontekście czasu wolnego Socjologia czasu wolnego WYKŁAD II.
ŚWIATOWY TYDZIEŃ PRZEDSIĘBIORCZOŚĆI
Systemy klastrowe inaczej klasterowe.
Wybrane dane statystyczne dotyczące przestępczości w Polsce DOKUMENTACJA ORAZ SPOSÓB WYKONANIA BAZY DANYCH W PROGRAMIE ACCESS.
Propozycja siatki godzin Specjalność: Modelowanie i Programowanie Systemów Informatycznych.
Autorzy: Agnieszka Kuraj Natalia Gałuszka Kl. III c.
Podstawowe jednostki informacji, co to jest bit i bajt?
PREZENTACJA WYKORZYSTANA PODCZAS DEBATY W SALI PATRONA SZKOŁY.
Debata- samorządność.. Samorząd Uczniowski to działająca w szkole instytucja, obejmująca całą społeczność uczniowską, niezależna od administracji oświatowej.
Prezentacja z przedmiotu „systemy wizyjne”
Prezentacja z przedmiotu systemy wizyjne Biblioteka Point Cloud Library Przygotowali: Paweł Król, Michał Kulbat Recenzent: Krzysztof Holak.
Podstawy programowania
Szkoła systemów społecznych. Istota, przedstawiciele, wyniki
Zwiększenie wykorzystania energii z OZE w budownictwie
Microsoft® Office EXCEL 2003
ST/PRM2-EU | April 2013 | © Robert Bosch GmbH All rights reserved, also regarding any disposal, exploitation, reproduction, editing, distribution,
Dyplomant : Karol Czułkowski
ALGORYTM.
Zmiany w licencjonowaniu Zasady licencjonowania.
Podstawy licencjonowania Exchange, SharePoint oraz Lync.
Automatyczne wyznaczanie złożoności obliczeniowej algorytmów
Technologię informatyczną wykorzystywana jest na tych zajęciach w dwojaki sposób: Przy użyciu płyt CD, które są jednym z elementów obudowy programu Matematyka.
Mikroprocesor Przygotowali: Oskar Tuszyński Krzysztof Cira.
System Center Summit Poland Sponsorzy Złoty Sponsor Srebrni Sponsorzy.
Opracowanie algorytmów programów komputerowych wykorzystania poszczególnych rodzajów OZE w budownictwie Autorzy: Marek Bieniecki Iwona Gil Mariusz Ćwieczek.
Komunikacja z platformą T2S
Rozrachunek trans-graniczny na T2S Dorota Grzegorczyk Dział Strategii i Rozwoju Biznesu, KDPW Warszawa 14 grudnia 2010.
Władza lokalna w Polsce
GPU Michał Drobot Technical Art Director Reality Pump.
Optimization Michał Drobot Technical Art Director Reality Pump.
Polskie cyfrowe miasto ? Marzenia a rzeczywistość. Maxymilian Bylicki - Zakopane, Polskie cyfrowe miasto - marzenia a rzeczywistość Maxymilian.
elektroniczna DEMOKRACJA LOKALNA IN STATU NASCENDI Krzysztof Ciupis
Bazy danych w systemie SimCallCenter Krótkie omówienie wyboru baz danych stosowanych w CallCenter, integracja z zewnętrznymi bazami danych Czas 15 min.
Prof. dr hab. Halina Buk WSPARCIE FUNDUSZY EUROPEJSKICH W FINANSOWANIU INWESTYCJI SAMORZĄDU TERYTORIALNEGO Chorzów, 26- września 2008 r.
WPROWADZENIE DO PROBLEMATYKI PSYCHOLOGII UCZENIA SIĘ
Warsztaty C# Część 3 Grzegorz Piotrowski Grupa.NET PO
KINECT – czyli z czym to się je?. Damian Zawada
Sieci komputerowe. Nowe technologie komputerowe
CZY SMUTEK OSŁABIA ROZUMOWANIE?
Wieloletnia Prognoza Finansowa – realność i użyteczność doświadczenia związane z wdrożeniem nowej instytucji.
Struktury Sieci Neuronowych
Projekt realizowany w ramach ZPORR, współfinansowany ze środków Unii Europejskiej z Europejskiego Funduszu Społecznego i budżetu państwa Ocena i oczekiwania.
PolGIS jako nowoczesny system do paszportyzacji sieci
Budowa struktur dla właściwego przekazu i odbioru informacji Czym jest samorząd informacyjny i jaki powinien być?
Weronika Schneider. Na fotografiach widać obecne budynki Polpharmy.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public ITE PC v4.0 Chapter 4 1 Rozdział 4: Podstawy konserwacji ochronnej i rozwiązywania problemów.
Procesy i wątki dla dociekliwych
A NALIZA OSIĄGNIĘĆ III LO W K RAKOWIE - E DUKACYJNA W ARTOŚĆ D ODANA.
1 PREZENTACJA FUNKCJONALNOŚCI DZIENNIKA UCZNIA Moduł Administratora ZAPRASZAMY ZAPRASZAMY O&S Computer-Soft ul. Żwirki i Wigury 8-12, Wałbrzych,
Ocenianie. 6 Ocenę celującą otrzymuje uczeń wówczas, jeżeli posiadł wiedzę i umiejętności wykraczające poza program nauczania w danej klasie, samodzielnie.
Temat 1: Umieszczanie skryptów w dokumencie
Informacje podstawowe
Wykład 6 Programowanie systemowe w Linux: Wątki i ich synchronizacja
Architektura systemów komputerowych zima 2013 Wykład 1 (cz. a) Wprowadzenie dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki
Matmatura 2013; 2014; 2015; 2016; 2017…. p. Katarzyna Misztal z uczniami klasy 2F: Monika Tobera Milena Ściana Radosław Stochmal KTO?
WoF PLATFORMA KOMUNIKACJI. WoF jest platformą komunikacji systemem wspomagającym obieg informacji oraz zarządzanie w firmie Zapewnia elektroniczny obieg.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
Instrukcje sterujące: W instrukcjach sterujących podejmowane są decyzje o wykonaniu tych czy innych instrukcji programu. Decyzje te podejmowane są w zależności.
Rozdział 6: Analiza protokołu TCP/IP
Komtech Sp. z o.o. Magic Janusz ROŻEJ.
Projekt Wortal Transferu Wiedzy jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego (85%) oraz ze środków budżetu.
Analiza procesów metodą siatki jakości, badanie satysfakcji klienta, doskonalenie z wykorzystaniem analizy ryzyka 24 kwietnia IV Konferencja Analizy.
TROCHĘ HISTORII Marek Zając PO CO UŻYWAĆ OPENCL? Marek Zając.
BVMS 3.0 Moduł 13: Opcje zapisu iSCSI
Xbox 360 a Playstation 3 technologie kodowania informacji
Zapis prezentacji:

Architektury wielopotokowe Michał Drobot

Multithreading WielowątkowośćWielowątkowość Umożliwia zwiększenie funkcjonalności, wydajności poprzez równoległe wykonywanie wielu pracUmożliwia zwiększenie funkcjonalności, wydajności poprzez równoległe wykonywanie wielu prac Przyszłość oprogramowania użytkowegoPrzyszłość oprogramowania użytkowego Standard aplikacji wysokowydajnychStandard aplikacji wysokowydajnych GryGry X360, PS3X360, PS3 Stanowi wyzwanie architektoniczne jak i sprzętoweStanowi wyzwanie architektoniczne jak i sprzętowe

Multithreading WielowątkowośćWielowątkowość Skalowalność architekturSkalowalność architektur 2, 4, 8,.. 64 rdzenie2, 4, 8,.. 64 rdzenie GPU : potoki : 8, 16 … 1200GPU : potoki : 8, 16 … 1200 Procesory wektorowe 1,2,3,4…Procesory wektorowe 1,2,3,4… Wymaga odmiennego podejścia do wielu problemów algorytmicznych, przechowywania jak i transferu danychWymaga odmiennego podejścia do wielu problemów algorytmicznych, przechowywania jak i transferu danych

Multithreading WielowątkowośćWielowątkowość Powoduje problemyPowoduje problemy SynchronizacjiSynchronizacji Współdzielenia zasobówWspółdzielenia zasobów ZakleszczeńZakleszczeń Problemy dostępuProblemy dostępu ArchitekturyArchitektury Zły kod wielowątkowy wykonuje się dłużej niż jednowątkowyZły kod wielowątkowy wykonuje się dłużej niż jednowątkowy

Architektury ogólne CPUCPU Szybkie CPU jedno-rdzenioweSzybkie CPU jedno-rdzeniowe Wirtualizacja MTWirtualizacja MT CPU Homogeniczne / Symetryczne (PC, XBOX)CPU Homogeniczne / Symetryczne (PC, XBOX) Duże rdzenie, 1-2 wątków sprzętowych na rdzeńDuże rdzenie, 1-2 wątków sprzętowych na rdzeń Skomplikowane przetwarzanie instrukcji OUT-OF-ORDER (utrudnienie lockless programming)Skomplikowane przetwarzanie instrukcji OUT-OF-ORDER (utrudnienie lockless programming) Procesory ogólnego zastosowania, ciężkie zunifikowane wątki, szybkie pojedynczoProcesory ogólnego zastosowania, ciężkie zunifikowane wątki, szybkie pojedynczo CPU Heterogeniczne (Cell)CPU Heterogeniczne (Cell) 1-2 dużych rdzeni ogólnego zastosowania1-2 dużych rdzeni ogólnego zastosowania Liczne małe rdzenie typu IN-ORDER, z lokalna pamięcią, kontroler DMALiczne małe rdzenie typu IN-ORDER, z lokalna pamięcią, kontroler DMA Specjalizowane, np. procesory wektorowe SIMDSpecjalizowane, np. procesory wektorowe SIMD Bardzo szybkie w swoich zastosowaniachBardzo szybkie w swoich zastosowaniach

Architektury ogólne GPUGPU Procesory potokoweProcesory potokowe Wielostopniowe procesory o wyspecjalizowanych jednostkach (np. merger, vertex shader, pixel shader)Wielostopniowe procesory o wyspecjalizowanych jednostkach (np. merger, vertex shader, pixel shader) Zunifikowane jednostki obliczenioweZunifikowane jednostki obliczeniowe Tysiące małych rdzeniTysiące małych rdzeni Lekkie wątki, wolne pojedynczo, szybkie poprzez ilośćLekkie wątki, wolne pojedynczo, szybkie poprzez ilość Specjalizowane procesory wektorowe do obliczeń zmiennoprzecinkowych SIMDSpecjalizowane procesory wektorowe do obliczeń zmiennoprzecinkowych SIMD Dużo szybsze w swoich zastosowaniach od ogólnych CPUDużo szybsze w swoich zastosowaniach od ogólnych CPU

Architektury ogólne GPUGPU Różne modele adopcjiRóżne modele adopcji DX9DX9 Konwencjonalny model procesora do obliczeń grafikiKonwencjonalny model procesora do obliczeń grafiki Standardowe potoki oraz etapy obliczeń ukierunkowane na grafikęStandardowe potoki oraz etapy obliczeń ukierunkowane na grafikę Możliwość zaadaptowania vertex/pixel shaderów do obliczeń ogólnego zastosowaniaMożliwość zaadaptowania vertex/pixel shaderów do obliczeń ogólnego zastosowania Brak współdzielenia pamięci => SIMDBrak współdzielenia pamięci => SIMD GPGPUGPGPU DX10DX10 Zunifikowane jednostki wykonawczeZunifikowane jednostki wykonawcze Duża konfigurowalność potokówDuża konfigurowalność potoków Podstawowe GPGPU (CUDA, OpenCL, STREAM)Podstawowe GPGPU (CUDA, OpenCL, STREAM) Brak pełnego współdzielenia pamięci => SIMDBrak pełnego współdzielenia pamięci => SIMD Łatwość komunikacji CPU GPUŁatwość komunikacji CPU GPU

Architektury ogólne GPUGPU Różne modele adopcjiRóżne modele adopcji GPGPUGPGPU DX11DX11 Zunifikowane procesoryZunifikowane procesory Większa programowalnośćWiększa programowalność Wprowadzenie architektury MIMDWprowadzenie architektury MIMD Współdzielenie pamięci między wątkamiWspółdzielenie pamięci między wątkami Prawdziwe architektury wielowątkowePrawdziwe architektury wielowątkowe Wsparcie dla mechanizmów znanych z C++Wsparcie dla mechanizmów znanych z C++ Ułatwienie komunikacji i wymiany danych między CPU a GPUUłatwienie komunikacji i wymiany danych między CPU a GPU

Architektury ogólne GPUGPU W zależności od standardu może być traktowany jako równoprawny z CPU zasób obliczeniowy stanowiący wsparcie w zadaniach o charakterze strumieniowymW zależności od standardu może być traktowany jako równoprawny z CPU zasób obliczeniowy stanowiący wsparcie w zadaniach o charakterze strumieniowym Tysiące lekkich wątkówTysiące lekkich wątków Obliczenia wektoroweObliczenia wektorowe

Architektury specyficzne Xbox 360Xbox 360 Power PC 3x3.2 Ghz (6 wątków sprzętowych)Power PC 3x3.2 Ghz (6 wątków sprzętowych) GPU DX10 48 potoków strumieniowychGPU DX10 48 potoków strumieniowych Współdzielona między CPU i GPU pamięć 512mbWspółdzielona między CPU i GPU pamięć 512mb Szybka pamięć podręczna GPU (EDRAM 10mb)Szybka pamięć podręczna GPU (EDRAM 10mb)

Architektury specyficzne PS3PS3 Power PC PPU 1x3.2 Ghz (2 wątki sprzętowe poprzez wirtualizację)Power PC PPU 1x3.2 Ghz (2 wątki sprzętowe poprzez wirtualizację) 7x SPU 3.2 Ghz7x SPU 3.2 Ghz Niekonwencjonalne procesoryNiekonwencjonalne procesory 256 kb pamięci podręcznej bezpośrednio adresowanej (brak cacheu)256 kb pamięci podręcznej bezpośrednio adresowanej (brak cacheu) Lokalny kontroler DMALokalny kontroler DMA Umożliwia transfery I/O danychUmożliwia transfery I/O danych Lokalizacja obliczeńLokalizacja obliczeń Prawdziwy procesor SIMDPrawdziwy procesor SIMD Konkurencyjna obsługa pamięci (2 instrukcje na zegar, 1 ALU, 1 support (branch, store, load…))Konkurencyjna obsługa pamięci (2 instrukcje na zegar, 1 ALU, 1 support (branch, store, load…)) GPU RSX 24 strumienie niezunifikowaneGPU RSX 24 strumienie niezunifikowane

Wymagania silnika Silnik aplikacji wysoko wydajnościowej czasu rzeczywistego (na podstawie gier)Silnik aplikacji wysoko wydajnościowej czasu rzeczywistego (na podstawie gier) WymaganiaWymagania Stabilna wydajność czasu rzeczywistegoStabilna wydajność czasu rzeczywistego Aktualizacje z każdą klatką, 30 fpsAktualizacje z każdą klatką, 30 fps Stabilność obliczeń – czas wykonania ponad jakośćStabilność obliczeń – czas wykonania ponad jakość Przewidywalne zużycie pamięciPrzewidywalne zużycie pamięci Ustalane z góry limity pamięcioweUstalane z góry limity pamięciowe Przekroczenia budżetu – katastrofalnePrzekroczenia budżetu – katastrofalne Unikanie alokacji w RTUnikanie alokacji w RT Preferowana pamięć zunifikowanaPreferowana pamięć zunifikowana Cross-platformowośćCross-platformowość Jednoczesna obsługa wielu architekturJednoczesna obsługa wielu architektur PC (Intel, Amd, xCore)PC (Intel, Amd, xCore) PowerPC – Xbox360PowerPC – Xbox360 Cell – Ps3Cell – Ps3

Architektury oprogramowania Wątki OSWątki OS Standardowa metodaStandardowa metoda Skuteczne dla małej #rdzeniSkuteczne dla małej #rdzeni Mało inwazyjnaMało inwazyjna Wspomagana systemowoWspomagana systemowo Złożoność rośnie nieliniowoZłożoność rośnie nieliniowo Trudność w zbalansowaniu obciążeniaTrudność w zbalansowaniu obciążenia Dekompozycja na samodzielne pracy jobsDekompozycja na samodzielne pracy jobs Inwazyjne przepisywanie danychInwazyjne przepisywanie danych Bardzo skalowalneBardzo skalowalne Łatwość obsługi dodatkowych elementów obliczeniowych (GPU, SPU)Łatwość obsługi dodatkowych elementów obliczeniowych (GPU, SPU) Dobre dla procesorów heterogenicznychDobre dla procesorów heterogenicznych Zarządzane przez procesor ogólnego przeznaczenia (PPU)Zarządzane przez procesor ogólnego przeznaczenia (PPU)

Job processing system Proste skalowalne praceProste skalowalne prace Dobrze określone I/ODobrze określone I/O Niezależna, bezstanowa, natychmiastowa, zawsze kończąca sięNiezależna, bezstanowa, natychmiastowa, zawsze kończąca się Prace dodawane do list zadańPrace dodawane do list zadań Listy zadańListy zadań Prosta synchronizacja poprzez tokeny sygnału i synchronizacjiProsta synchronizacja poprzez tokeny sygnału i synchronizacji Czas synchronizacji ukryty w mnogości i równoległości pracCzas synchronizacji ukryty w mnogości i równoległości prac Wykonywane asynchronicznieWykonywane asynchronicznie

Job processing system SynchronizacjaSynchronizacja Zbyt długie oczekiwanie zabija efekt równoległościZbyt długie oczekiwanie zabija efekt równoległości Prace zależne od siebie == ZUOPrace zależne od siebie == ZUO Decyzje architektoniczneDecyzje architektoniczne Dopuszczalne wykonanie pracy = 1 klatkaDopuszczalne wykonanie pracy = 1 klatka Wyniki danej pracy dostępne z opóźnieniemWyniki danej pracy dostępne z opóźnieniem Wymaga odmiennego podejścia do algorytmówWymaga odmiennego podejścia do algorytmów Eliminuje niektóre zastosowaniaEliminuje niektóre zastosowania Ogólnie zysk z równoległości zadań przebija stratyOgólnie zysk z równoległości zadań przebija straty

Job based system Poziomy pracPoziomy prac Kod zarządzający (C++) – CPUKod zarządzający (C++) – CPU Systemowe prace CPU (C++)Systemowe prace CPU (C++) Systemowe prace SPU (C++/asm)Systemowe prace SPU (C++/asm) Kernele obliczeniowe (GP)GPU (HLSL)Kernele obliczeniowe (GP)GPU (HLSL)

Job based system Kod zarządzającyKod zarządzający Główny kod aplikacjiGłówny kod aplikacji Niska gęstość obliczeńNiska gęstość obliczeń Duże rozproszenie pamięcioweDuże rozproszenie pamięciowe Skakanie wskaźnikówSkakanie wskaźników Kod trudny do urównolegleniaKod trudny do urównoleglenia OUT-OF-ORDEROUT-OF-ORDER Konsole działają w trybie IN-ORDERKonsole działają w trybie IN-ORDER Duża złożoność logicznaDuża złożoność logiczna Stanowi klej łączący wszystkie zlecane zadaniaStanowi klej łączący wszystkie zlecane zadania

Job based system Systemowe praceSystemowe prace CPU jobCPU job Kod przeniesiony z wątku do pracyKod przeniesiony z wątku do pracy SPU jobSPU job Kod zorientowany na daneKod zorientowany na dane BezstanowyBezstanowy Lokalny pamięciowoLokalny pamięciowo Jeśli brak dedykowanego sprzętu => CPU jobJeśli brak dedykowanego sprzętu => CPU job GPGPU jobGPGPU job Kod specjalizowanyKod specjalizowany Zorientowany na daneZorientowany na dane Wysoce optymalizowanyWysoce optymalizowany Wykonywany na GPUWykonywany na GPU

Job based system

Budowanie grafów pracBudowanie grafów prac Miksowanie CPU/SPU/GPU JobsMiksowanie CPU/SPU/GPU Jobs Batching – zlecanie zadań na dużych ilościach danychBatching – zlecanie zadań na dużych ilościach danych Podział danych pomiędzy równoległe pracePodział danych pomiędzy równoległe prace Zależności między pracami determinująZależności między pracami determinują Kolejność wykonaniaKolejność wykonania Punkty synchronizacjiPunkty synchronizacji Balans obciążenia systemuBalans obciążenia systemu Efektywność równoległości obliczeńEfektywność równoległości obliczeń

Job based system Maksymalizacja równoległości zadańMaksymalizacja równoległości zadań

Przyszłość Obecne trendy obliczeń HP RTObecne trendy obliczeń HP RT Systemy nastawione na krótkie, szybkie praceSystemy nastawione na krótkie, szybkie prace Obsługujące liczne procesory o różnych charakterystykachObsługujące liczne procesory o różnych charakterystykach Dobór odpowiedniego procesora do rodzaju zleconego zadaniaDobór odpowiedniego procesora do rodzaju zleconego zadania Nastawienie na wymianę danychNastawienie na wymianę danych Równoległość obliczeńRównoległość obliczeń

Przyszłość TrendyTrendy Wieloprocesorowe systemy licząceWieloprocesorowe systemy liczące Zunifikowana pamięćZunifikowana pamięć Minimalizacja opóźnieńMinimalizacja opóźnień Wysoka specjalizacja procesorówWysoka specjalizacja procesorów Bądź ujednolicona architekturaBądź ujednolicona architektura Obecnie projekt AMD Fusion – integracja CPU z GPUObecnie projekt AMD Fusion – integracja CPU z GPU Równoległość przetwarzania z lokalizacją danychRównoległość przetwarzania z lokalizacją danych

Pytania ?