Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

Podobné dokumenty
Paralelní architektury se sdílenou pamětí

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Úvod do OpenMP. Jiří Fürst

Paralelní architektury se sdílenou pamětí

Paralelní architektury - úvod

OPS Paralelní systémy, seznam pojmů, klasifikace

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Architektury paralelních počítačů I.

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Množina čísel int stl-set-int.cpp

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Paralelní architektury - úvod

Procesy a vlákna (Processes and Threads)

Mezipaměti počítače. L2 cache. L3 cache

Ro R dina procesor pr ů Int In e t l Nehalem Šmída Mojmír, SMI108 PAP PA 2009

Integrovaná střední škola, Sokolnice 496

Paměťový podsystém počítače

architektura mostů severní / jižní most (angl. north / south bridge) 1. Čipové sady s architekturou severního / jižního mostu

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Struktura a architektura počítačů (BI-SAP) 11

Paralelní a distribuované výpočty (B4B36PDV)

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Vícejádrový procesor. Dvě nebo více nezávislých jader Pro plné využití. podporovat multihreading

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Operační systémy. Přednáška 1: Úvod

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Vstupně - výstupní moduly

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

Paralelní a distribuované výpočty (B4B36PDV)

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Úvod do Linuxu. SŠSI Tábor 1

Identifikátor materiálu: ICT-1-08

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

GPU a CUDA. Historie GPU. Co je GPGPU? Nvidia CUDA

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

Pokročilé architektury počítačů

Představení a vývoj architektur vektorových procesorů

Systém adresace paměti

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Roman Výtisk, VYT027

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Hlavní využití počítačů

Disková pole (RAID) 1

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Programování inženýrských aplikací

C++ 0x aka C++11. Základním kamenem je třída std::thread

Paměti cache. Cache může být realizována softwarově nebo hardwarově.

Operační systémy. Cvičení 3: Programování v C pod Unixem

Příkaz finger. # finger sam Login: sam Name: Sam Greenfield Directory: /home/sam Shell: /bin/tcsh Last login Sun Dec 25 14:47 (EST) on tty2 No Plan.

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

09. Memory management. ZOS 2006, L.Pešička

C2115 Praktický úvod do superpočítání

Základní deska (mainboard)

Počítač jako elektronické, Číslicové zařízení

Paralelní a distribuované výpočty (B4B36PDV)

Pokročilé architektury počítačů

Základní typy struktur výpočetních systémů

Profilová část maturitní zkoušky 2014/2015

Operační systémy. Cvičení 4: Programování v C pod Unixem

Server je v informatice obecné označení pro počítač, který poskytuje nějaké služby nebo počítačový program, který tyto služby realizuje.

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Pavel Procházka. 3. prosince 2014

Pokročilé architektury počítačů

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Ukázka zkouškové písemka OSY

Úvod SISD. Sekvenční výpočty SIMD MIMD

Paralelní programování

Funkční objekty v C++.

Reprezentace dat v informačních systémech. Jaroslav Šmarda

PROGRAMOVÁNÍ V C++ CVIČENÍ

Systémy pro sběr a přenos dat

Struktura a architektura počítačů (BI-SAP) 10

Základní uspořádání pamětí MCU

Operační systémy. Přednáška 4: Komunikace mezi procesy

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Pohled do nitra mikroprocesoru Josef Horálek

Práce s knihovnami. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

CHARAKTERISTIKA VEŘEJNÉ ZAKÁZKY

Paměťové prvky. ITP Technika personálních počítačů. Zdeněk Kotásek Marcela Šimková Pavel Bartoš

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Intel Microarchitecture Nehalem

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

ProjectWise V8 XM Edition

PROCESOR. Typy procesorů

Martin Lísal. Úvod do MPI

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Pokročilé architektury počítačů

Transkript:

Paralelní architektury se sdílenou pamětí typu NUMA NUMA architektury

Multiprocesorové systémy s distribuovanou pamětí I. úzkým hrdlem multiprocesorů se sdílenou pamětí je datová komunikace s rostoucím počtem procesorů není pamět ový systém schopen obsluhovat všechny požadavky problem cache coherence se také stává komplikovanější může se stát, že přidáváním dalších procesorů výkon multiprocesoru dokonce sníží počet CPU u multiprocesorů se sdílenou pamětí je omezen na několik desítek 64 řešením je zavedení multiprocesorů s distribuovanou pamětí příklad - Cray T3D, 1993

Multiprocesorové systémy s distribuovanou pamětí II. CPU CPU CPU CPU M M M M RAM I/O RAM I/O RAM I/O RAM I/O Interconnection network

Multiprocesorové systémy s distribuovanou pamětí III. každý procesor má rychlý přístup do své paměti, ale velice pomalý přístup do cizí paměti předpokládá se, že běžný kód splňuje spatial locality většina přístupů do paměti tedy bude probíhat na úrovni lokální paměti daného CPU což snižuje zátěž na IN - interconnection a to umožňuje vytvářet systémy s mnohem větším počtem CPU (řádově tisíce) soubor všech lokálních pamětí jednotlivých CPU dohromady tvoří jeden logický adresový prostor protože rychlost přístupu k jednotlivým adresám se liší, mluvíme o NUMA architektuře NUMA = non-uniform memory acces rozdíl může být až stonásobný

Multiprocesorové systémy s distribuovanou pamětí IV. problém cache coherence nemůže být řešen pomocí "čmuchacího"protokolu multiprocesory s distribuovanou pamětí nepoužívají sběrnici ani s jiném komunikačním zařízením by to s tak velkým počtem procesorů nebylo realizovatelné místo toho se používá tzv. adresář directory-based protocol

Multiprocesorové systémy s distribuovanou pamětí V. Directory based systems jde o systémy doplněné tabulkou popisující stavy jednotlivých bloků paměti ty mohou být opět shared, invalid a modified SHARED - proměnná je sdílena více CPU, ale všichni ji používají jen ke čtení - její hodnota v globální virtuální paměti je korektní INVALID - jeden z procesorů provedl zápis - hodnota proměnné v globální virtuální paměti není správná MODIFIED - procesor, který má proměnnou označenou za modified, je ten, který k ní má momentálně exkluzivní přístup tento adresář může být velký a zásadně zpomalovat přístup do paměti někdy se provádí jeho rozdělení mezi všechny procesory, čímž se zátěž distribuuje na celý systém

Intel Quick Path Interconnect Intel Nehalem Quick Path Interconnect

Intel Quick Path Interconnect Intel Nehalem Quick Path Interconnect Zdroj: http://www.tomshardware.com/reviews/intel-i7-nehalem-cpu,2041.html

Intel Quick Path Interconnect Intel Nehalem Quick Path Interconnect Zdroj: http://www.tomshardware.com/reviews/intel-i7-nehalem-cpu,2041.html

Intel Quick Path Interconnect na současných architekturách je zpomalení při přístupu do vzdáleného pamět ového čipu řádově desítky procent (cca. 50%) v ideálním případě by každé vlákno mělo přistupovat do svého pamět ového modulu v nejhorším případě budou všechna vlákna přistupovat jen do jednoho modulu vše bude obsluhovat jeden pamět ový řadič a ostatní zůstanou nevyužity během výpočtu navíc vlákna migrují mezi různými jádry

Migrace vláken Příklad: Migraci vláken demonstruje následující program. 1 #include <omp. h> 2 #include <iostream > 3 #include <sched. h> 4 #include <time. h> 5 6 using namespace std ; 7 8 i n t main ( i n t argc, char argv [ ] ) 9 { 10 cout << "Press Ctrl-C to quit." << endl ; 11 #pragma omp p a r a l l e l 12 { 13 i n t core ( 1 ) ; 14 while ( true ) 15 { 16 i n t currentcore = sched_getcpu ( ) ; 17 i f ( currentcore!= core ) 18 { 19 t i m e _ t rawtime ; 20 struct tm timeinfo ; 21 time ( &rawtime ) ; 22 t i m e i n f o = l o c a l t i m e ( &rawtime ) ; 23 cout << "Thread " << omp_get_thread_num ( ) 24 << " is migrating to the core " 25 << currentcore << " at " << asctime ( timeinfo ) ; 26 core = currentcore ; 27 } 28 } 29 } 30 }

Migrace vláken Takto může vypadat výstup programu: 1 Press Ctrl C to quit. 2 Press Ctrl C to quit. 3 Thread 5 i s m i g r a t i n g to the core 5 a f t e r 386991 CPU t i c k s at Sat Mar 14 15:08:58 2015 4 Thread 3 i s m i g r a t i n g to the core 0 a f t e r 734313 CPU t i c k s at Sat Mar 14 15:08:58 2015 5 Thread 1 i s m i g r a t i n g to the core 4 a f t e r 803332 CPU t i c k s at Sat Mar 14 15:08:58 2015 6 Thread 2 i s m i g r a t i n g to the core 1 a f t e r 1175374 CPU t i c k s at Sat Mar 14 15:08:58 2015 7 Thread 3 i s m i g r a t i n g to the core 3 a f t e r 1289344 CPU t i c k s at Sat Mar 14 15:08:58 2015 8 Thread 0 i s m i g r a t i n g to the core 4 a f t e r 1213527 CPU t i c k s at Sat Mar 14 15:08:58 2015 9 Thread 4 i s m i g r a t i n g to the core 1 a f t e r 12916 CPU t i c k s at Sat Mar 14 15:08:58 2015 10 Thread 0 i s m i g r a t i n g to the core 1 a f t e r 73309 CPU t i c k s at Sat Mar 14 15:08:58 2015 11 Thread 0 i s m i g r a t i n g to the core 3 a f t e r 16392 CPU t i c k s at Sat Mar 14 15:08:58 2015 12 Thread 2 i s m i g r a t i n g to the core 3 a f t e r 16516469 CPU t i c k s at Sat Mar 14 15:08:58 2015 13 Thread 2 i s m i g r a t i n g to the core 2 a f t e r 26534 CPU t i c k s at Sat Mar 14 15:08:58 2015 14 Thread 3 i s m i g r a t i n g to the core 2 a f t e r 4435367910 CPU t i c k s at Sat Mar 14 15:09:00 2015 15 Thread 3 i s m i g r a t i n g to the core 0 a f t e r 33729 CPU t i c k s at Sat Mar 14 15:09:00 2015 16 Thread 3 i s m i g r a t i n g to the core 3 a f t e r 590357448 CPU t i c k s at Sat Mar 14 15:09:00 2015 17 Thread 0 i s m i g r a t i n g to the core 0 a f t e r 5061599111 CPU t i c k s at Sat Mar 14 15:09:00 2015 18 Thread 0 i s m i g r a t i n g to the core 5 a f t e r 735083041 CPU t i c k s at Sat Mar 14 15:09:00 2015 19 Thread 5 i s m i g r a t i n g to the core 0 a f t e r 5819493402 CPU t i c k s at Sat Mar 14 15:09:00 2015 20 Thread 5 i s m i g r a t i n g to the core 4 a f t e r 3052310067 CPU t i c k s at Sat Mar 14 15:09:01 2015 21 Thread 5 i s m i g r a t i n g to the core 0 a f t e r 32086 CPU t i c k s at Sat Mar 14 15:09:01 2015 22 Thread 4 i s m i g r a t i n g to the core 4 a f t e r 15851139081 CPU t i c k s at Sat Mar 14 15:09:04 2015 23 Thread 1 i s m i g r a t i n g to the core 1 a f t e r 15853509961 CPU t i c k s at Sat Mar 14 15:09:04 2015 24 Thread 5 i s m i g r a t i n g to the core 2 a f t e r 12766345638 CPU t i c k s at Sat Mar 14 15:09:06 2015 25 Thread 2 i s m i g r a t i n g to the core 0 a f t e r 21705683629 CPU t i c k s at Sat Mar 14 15:09:06 2015 26 Thread 2 i s m i g r a t i n g to the core 1 a f t e r 711091745 CPU t i c k s at Sat Mar 14 15:09:06 2015 27 Thread 1 i s m i g r a t i n g to the core 0 a f t e r 6588260892 CPU t i c k s at Sat Mar 14 15:09:06 2015 28 Thread 2 i s m i g r a t i n g to the core 0 a f t e r 5461163460 CPU t i c k s at Sat Mar 14 15:09:08 2015 29 Thread 1 i s m i g r a t i n g to the core 3 a f t e r 5561530993 CPU t i c k s at Sat Mar 14 15:09:08 2015 30 Thread 3 i s m i g r a t i n g to the core 4 a f t e r 23001697404 CPU t i c k s at Sat Mar 14 15:09:08 2015 31 Thread 3 i s m i g r a t i n g to the core 1 a f t e r 84379524 CPU t i c k s at Sat Mar 14 15:09:08 2015 32 Thread 2 i s m i g r a t i n g to the core 2 a f t e r 502115392 CPU t i c k s at Sat Mar 14 15:09:08 2015 33 Thread 2 i s m i g r a t i n g to the core 0 a f t e r 9156 CPU t i c k s at Sat Mar 14 15:09:08 2015 34 Thread 3 i s m i g r a t i n g to the core 0 a f t e r 305147445 CPU t i c k s at Sat Mar 14 15:09:08 2015 35 Thread 3 i s m i g r a t i n g to the core 1 a f t e r 115674659 CPU t i c k s at Sat Mar 14 15:09:08 2015 36 Thread 3 i s m i g r a t i n g to the core 5 a f t e r 385608623 CPU t i c k s at Sat Mar 14 15:09:08 2015 37 Thread 3 i s m i g r a t i n g to the core 1 a f t e r 53204 CPU t i c k s at Sat Mar 14 15:09:08 2015 38 Thread 3 i s m i g r a t i n g to the core 3 a f t e r 189602415 CPU t i c k s at Sat Mar 14 15:09:08 2015 39 Thread 3 i s m i g r a t i n g to the core 4 a f t e r 19276581 CPU t i c k s at Sat Mar 14 15:09:08 2015 40 Thread 4 i s m i g r a t i n g to the core 1 a f t e r 13335348861 CPU t i c k s at Sat Mar 14 15:09:08 2015 41 Thread 4 i s m i g r a t i n g to the core 5 a f t e r 528286578 CPU t i c k s at Sat Mar 14 15:09:08 2015 42 Thread 0 i s m i g r a t i n g to the core 1 a f t e r 24026530917 CPU t i c k s at Sat Mar 14 15:09:08 2015 43 Thread 0 i s m i g r a t i n g to the core 5 a f t e r 96248748 CPU t i c k s at Sat Mar 14 15:09:08 2015 44 Thread 4 i s m i g r a t i n g to the core 4 a f t e r 220570368 CPU t i c k s at Sat Mar 14 15:09:08 2015 45 Thread 3 i s m i g r a t i n g to the core 1 a f t e r 799437134 CPU t i c k s at Sat Mar 14 15:09:08 2015 46 Thread 3 i s m i g r a t i n g to the core 5 a f t e r 116768426 CPU t i c k s at Sat Mar 14 15:09:08 2015 47 Thread 0 i s m i g r a t i n g to the core 1 a f t e r 349676495 CPU t i c k s at Sat Mar 14 15:09:08 2015 48 Thread 3 i s m i g r a t i n g to the core 3 a f t e r 580984971 CPU t i c k s at Sat Mar 14 15:09:09 2015 49 Thread 3 i s m i g r a t i n g to the core 5 a f t e r 48299802 CPU t i c k s at Sat Mar 14 15:09:09 2015 50 Thread 2 i s m i g r a t i n g to the core 4 a f t e r 2865194039 CPU t i c k s at Sat Mar 14 15:09:09 2015 51 Thread 4 i s m i g r a t i n g to the core 0 a f t e r 1385208571 CPU t i c k s at Sat Mar 14 15:09:09 2015 52 Thread 4 i s m i g r a t i n g to the core 5 a f t e r 157697835 CPU t i c k s at Sat Mar 14 15:09:09 2015 53 Thread 1 i s m i g r a t i n g to the core 0 a f t e r 3544254891 CPU t i c k s at Sat Mar 14 15:09:09 2015 54 Thread 4 i s m i g r a t i n g to the core 3 a f t e r 51787053 CPU t i c k s at Sat Mar 14 15:09:09 2015 55 Thread 1 i s m i g r a t i n g to the core 5 a f t e r 361267847 CPU t i c k s at Sat Mar 14 15:09:09 2015 56 Thread 3 i s m i g r a t i n g to the core 0 a f t e r 1227173431 CPU t i c k s at Sat Mar 14 15:09:09 2015 57 Thread 1 i s m i g r a t i n g to the core 1 a f t e r 1265811160 CPU t i c k s at Sat Mar 14 15:09:09 2015 58 Thread 1 i s m i g r a t i n g to the core 5 a f t e r 128875029 CPU t i c k s at Sat Mar 14 15:09:09 2015 59 Thread 1 i s m i g r a t i n g to the core 3 a f t e r 304949136 CPU t i c k s at Sat Mar 14 15:09:10 2015 60 Thread 3 i s m i g r a t i n g to the core 5 a f t e r 1711549976 CPU t i c k s at Sat Mar 14 15:09:10 2015 61 Thread 3 i s m i g r a t i n g to the core 0 a f t e r 58918164 CPU t i c k s at Sat Mar 14 15:09:10 2015 62 Thread 4 i s m i g r a t i n g to the core 5 a f t e r 2211222747 CPU t i c k s at Sat Mar 14 15:09:10 2015 63 Thread 4 i s m i g r a t i n g to the core 2 a f t e r 232344623 CPU t i c k s at Sat Mar 14 15:09:10 2015 64 Thread 5 i s m i g r a t i n g to the core 5 a f t e r 12459632962 CPU t i c k s at Sat Mar 14 15:09:10 2015

Migrace vláken migrování vláken lze zabránit pomocí nastavení systemové proměnné export OMP_PROC_BIND=TRUE tento příkaz zadáme na příkazovou řádku před spuštěním našeho programu s jejím použitím nám dá stejný program následující výpis 1 Press C t r l C to q u i t. 2 Thread 0 i s m i g r a t i n g to the core 0 a f t e r 292506 CPU t i c k s at... 3 Thread 2 i s m i g r a t i n g to the core 2 a f t e r 816622 CPU t i c k s at... 4 Thread 3 i s m i g r a t i n g to the core 3 a f t e r 1616438 CPU t i c k s at... 5 Thread 4 i s m i g r a t i n g to the core 4 a f t e r 1971582 CPU t i c k s at... 6 Thread 5 i s m i g r a t i n g to the core 5 a f t e r 2743793 CPU t i c k s at... 7 Thread 1 i s m i g r a t i n g to the core 1 a f t e r 3018228 CPU t i c k s at...