Pokročilé architektury počítačů

Podobné dokumenty
Pokročilé architektury počítačů

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA

Pokročilé architektury počítačů

Architektura Intel Atom

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

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

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

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

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

Intel (2) Intel (1) Intel (3) Intel (4) Intel (6) Intel (5) Nezřetězené zpracování instrukcí:

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Úvod do GPGPU J. Sloup, I. Šimeček

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

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

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

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

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

Řízení IO přenosů DMA řadičem

Pohled do nitra mikroprocesoru Josef Horálek

Technické prostředky počítačové techniky

Osobní počítač. Zpracoval: ict Aktualizace:

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

Systém adresace paměti

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

Roman Výtisk, VYT027

Procesy a vlákna (Processes and Threads)

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

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

Provádění instrukcí. procesorem. Základní model

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

Představení a srovnání grafických procesorů ATI RV770 a NVIDIA G(T)200

Procesor. Procesor FPU ALU. Řadič mikrokód

Intel Itanium. Referát. Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky

PROCESOR. Typy procesorů

CUDA J. Sloup a I. Šimeček

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

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Architektury VLIW M. Skrbek a I. Šimeček

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Charakteristika dalších verzí procesorů v PC

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

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Co je grafický akcelerátor

Nvidia CUDA Paralelní programování na GPU

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

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

Procesor z pohledu programátora

MSP 430F1611. Jiří Kašpar. Charakteristika

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

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

Vyuºití GPGPU pro zpracování dat z magnetické rezonance

Princip funkce počítače

Xbox 360 Cpu = IBM Xenon

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

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

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

Paralelní programování

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

Optimalizace pro GPU hardware

Architektura Intel Nehalem

Pokročilé architektury počítačů

GPGPU. Jan Faigl. Gerstnerova Laboratoř pro inteligentní rozhodování a řízení České vysoké učení technické v Praze

Pokročilé architektury počítačů

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

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

Mikrokontroléry. Doplňující text pro POS K. D. 2001

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

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

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

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

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

Architektura procesoru ARM

Adresní mody procesoru

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

Nvidia CUDA Paralelní programování na GPU

2 Hardware a operační systémy

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

Charakteristika dalších verzí procesorů Pentium

Referát (pokročilé architektury počítačů)

Procesory. Autor: Kulhánek Zdeněk

Úvod do architektur personálních počítačů

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Cell broadband engine architecture

Základní deska (1) Označována také jako mainboard, motherboard. Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje:

Cache paměť - mezipaměť

Techniky zvýšení výkonnosti procesoru, RISC a CISC procesory

Paměti EEPROM (1) Paměti EEPROM (2) Paměti Flash (1) Paměti EEPROM (3) Paměti Flash (2) Paměti Flash (3)

Architektura počítačů

HW počítače co se nalézá uvnitř počítačové skříně

Blue Gene Vysoká škola báňská-technická univerzita Ostrava. Blue Gene. Karel Chrastina. Úvod. Blue Gene L. Blue Gene P.

Systém řízení sběrnice

Architektura počítače

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

Metody připojování periferií

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

Transkript:

Pokročilé architektury počítačů Přednáška 5 GPU - CUDA Martin Milata

Obsah Obecné výpočty a GPU Grafické procesory NVIDIA Tesla Výpočetní model Paměťový model GT200 Zpracování instrukcí Vydávání instrukcí a časování procesoru Větvení programu Přístup do pamětí NVIDIA Fermi

Výpočty a GPU Použití GPU k obecným výpočtům Vývoj v oblasti GPU donedávna veden především herním průmyslem Rychle rostoucí výkon s omezenými schopnostmi grafického procesoru Podpora omezené aritmetiky s plovoucí řádovou čárkou rozšiřuje možnosti uplatnění GPU Skutečný průlom až s příchodem unifikované výpočetní architektury Co počítat? Standardní využití GPU pro práci s obrazovými daty Vědecké výpočty s omezenými možnostmi přesnosti v oblasti plovoucí řádové čárky Vždy je potřeba extrémní paralelizovatelnost problému s jednoduchými datovými strukturami (obvykle vícerozměrná pole)

Grafické procesory (GPU) Architekturou určeny pro zpracování tisíců vláken Přímočarý snadno paralelizovatelný kód umožňuje využít jejich potenciál Masivní vláknový paralelismus přináší mnoho omezení Žádné nebo výjimečně minimální možnosti spekulace Absence predikce větvení programu Odlišně realizované cache pamětí Mnohonásobný paralelní přístup (šířka pásma) Latence není primárním účelem Obtížné řízení a synchronizace vláken programu Jak zajistit běh více než 1000 vláken Jak zacházet s větvením programu a to mnohdy v rozdílných směrech Jak realizovat přístup do paměti při práci s rozdílnými bloky

NVIDIA Tesla Navržená pro grafické a obecné výpočty Podpora obecných výpočtů v podobě programovacího modelu CUDA Compute Unified Device Architecture (CUDA) Nástavba programovacího jazyka pro práci se stovkami vláken v prostření GPU (programovací model) Cílem je vytvořit zdání téměř bezlimitních možností paralelismu na úrovni vláken Dynamické využívání HW zdrojů GPU využíván jako koprocesor CPU pro jednoduché masivně paralelní výpočty Vychází z architektury GPU používané pro standardní grafické výpočty Zachovává si některé specifika pro GPU (Cache textur, interpolace pixelů, Z- buffer, alpha-blending)

Výpočetní model CUDA Organizace kódu Sériově organizovaný kód určený pro CPU Paralelní kód prováděný na GPU Označuje se jako kernel GPU kernel provádí se na tzv. grid struktuře Grid se skládá z bloků (1D nebo 2D struktura) Blok je skupina až 512 vláken pro revize 1.x resp. 1024 vláken pro revize 2.x organizovaných do 1, 2 nebo 3 rozměrného pole Hierarchizované uspořádání paralelismů

Výpočetní model CUDA Skupina vláken - blok (Thread block) Startuje provádění na stejné adrese (začínají na stejné instrukci) Je prováděna paralelně prostředky daného bloku Sdílí oblast ve sdílené paměti (sdílení dat a synchronizační mechanizmy) V omezené míře mohou jednotlivá vlákna při vlastním výpočtu volit rozdílné cesty kódem (neomezená divergence by měla významný výkonnostní dopad) V rámci grid struktury kolekci bloků je rovněž možné plně paralelní provádění Bloky a vlákna v nich mohou být prováděny paralelně Mezi bloku jedné grid struktury nesmí existovat závislosti (explicitní pořadí provádění bloků nelze stanovit) Serializační hranici tvoří grid (resp. kernel)

Paměťový model CUDA Definuje různé adresní prostory pro přístup v rámci GPU a komunikaci s CPU Globální paměť, paměť konstant a textur jsou přístupné GPU a CPU Registry, lokální a sdílená paměť přístupné GPU Latence paměti Rychlá paměť s nízkou latencí registry a sdílená paměť Frame buffer (DRAM paměť) lokální paměť, paměť konstant a textur

Paměťový model CUDA Vláknům vyhrazené paměti Registry pro vlákno vyhrazená skupina registrů Lokální paměť prostor vyhrazen vláknu, fyzicky uložen v DRAM (off-chip), pomalý přístup bez použití cache Paměť sdílená vlákny bloku Sdílená paměť přístupná výhradně v rámci bloku, umístěná on-chip, latence téměř rovna registrům Paměť sdílená mezi bloky v rámci gridu Globální paměť off-chip DRAM paměť, R/W přístup, pomalá paměť bez použití cache, přístupná z GPU i CPU Paměť konstant a Paměť textur obě paměti off-chip, pouze pro čtení, přístup akcelerován pomocí cache Revize jádra Fermi přináší nově pravou hierarchii cache pamětí. Umožňuje akceleraci přístupu k off-chip pamětem

Evoluce a CUDA Evoluce a revize Odráží vývoj hardware Revize rozšiřují schopnosti CUDA např. o podporu atomických operací se slovy ve sdílené či globální paměti Revize 1.3 přidává podporu pro tzv. double precision operace/hodnoty v plovoucí řádové čárce (NVIDIA Fermi architektura) Monolitické a více-čipové systémy Monolitická architektura pro obecné výpočty užitečnější; mezi více čipy není s podporou HW zajištěna synchronizace; v rámci čipu synchronizace částečně zajištěna je Více-čipové systémy levnější, dostupnější a více zastoupené na trhu; synchronizace dat při obecných výpočtech v rukou programátora, dopad na výkon

Vztah CUDA - TESLA CUDA logický popis x TESLA hardwarová architektura Streaming Multiprocessor (SM) přibližně jádro v pojetí mikroprocesorů obsahuje jednotky pro vydání, dekódování a provádění instrukcí disponuje privátními registry, sdílenou pamětí a tzv. thread procesory Thread block logického popisu je mapován na Streaming Multiprocessor hardwarové implementace Každý SM provádí skupinu warpů s oddělenými PC (program counter). Provádí se vždy warp s připravenými instrukcemi. Obdoba SMT, hyperthreading

Představení GT200 Více-jádrový čip s dvouvrstvou hierarchií 10x Thread Processing Cluster (TPC) na vyšší úrovni 3x Streaming Multiprocessor (SM) nebo Thread Processor Array (TPA) na nižší úrovni v rámci každého TPC Hierarchie definovaná realizací přístupu do paměti SM v rámci TPC sdílí přístup k hierarchií cache pamětí v rámci přístupu do paměti textur

Bližší pohled na výpočetní architekturu GT200 Globální plánovač (Global Block Scheduler) Pracuje nad CUDA kernelem předaným na GPU z CPU Zpracovává informace z kernelu a distribuuje Thread Block na SM s dostupnými zdroji přes celý čip Streaming Multiprocessor Dokáže zpracovávat až 8 bloků (na SM zaslány z GBS) celkem 1024 možných vláken je postupně vykonáváno předpoklad jsou volné zdroje Překládá bloky do tzv. warp, které dále provádí na SP Warp obsahuje 32 vláken Instrukce seskupovány primárně podle latence (doba provádění nebo latence spojená s přístupem do paměti)

Bližší pohled na výpočetní architekturu GT200 Streaming Multiprocessor (SM) SM Controller Instrukční cache Warp buffer Tabulka skóre 8x Streaming Processor (SP) Funkční jednotka 2x speciální funkční jednotka souvisí s grafickými výpočty zle je použít jako násobičky 1x 64bit funkční jednotka 16k 32bit registrů 16kB sdílené paměti

Zpracování instrukcí na SM SM zajišťuje zpracování (převod na warp), řazení, plánování a provádění instrukcí v rámci warp (instrukce 32 vláken) Vytvořená warp instrukce je uložena v bufferu Plánování warp instrukcí je závislé na tabulce skóre warp instrukci přidán příznak ready-to-execute příznak se nastaví v okamžiky vyřešení všech závislostí Plánovač provádí plánování na základně priority warp instrukce v bufferu a příznaku ready-to-execute Výpočet priority odvozen např. od typu warp instrukce

Vydávání instrukcí a časování procesorů V rámci NVIDIA mikroarchitektury existují tři domény s rozdílným časováním Core clock pomalý cyklus (např. 600MHz) FUs clock rychlý cyklus (např. 1200MHz) Memory clock (např. 1100MHz) Vydávací logika může vydávat 1 warp instrukci každý pomalý cyklus Vydávání je možné pouze v případě podporované kombinace vydávaných warp instrukcí FU obvykle potřebují k dokončení výpočtu 4 rychlé cykly Přibližně každé dva rychlé cykly je vydaná jedna warp instrukce pro nezávislé jednotky v rámci SM Instrukce jsou prováděny nezřetězeně v paralelním překryvu na více FU

Větvení programu Zpracování warp Všechny vlákna warp začínají provádění na stejné adrese Při zpracování instrukcí větvení je další provádění pozastaveno dokud nejsou vypočteny všechny cílové adresy Pokud všechna vlákna pokračují provádění stejnou cestou, zpracování instrukcí warp se nemění Pokud vlákna v provádění divergují (vypočtené adresy skoku se liší) Warp serializuje provádění jednotlivých cest pomocí postupného omezení výpočtu instrukcí Vlákna mohou rekonvergovat a pokračovat ve společném provádění Divergence cest ve warp má nepříznivý dopad na výkon Potřeba načítání instrukcí mimo bloky cache paměti Rozdílné cesty mezi warp nepředstavují problém

Přístup do paměti Load a Store instrukce jsou generovány v SM Jejich vydání a provádění je rozprostřeno v HW doménách s rozdílným časováním vyžaduje účast SM kontroléru Výpočet adresy z registru a offsetu Překlad adresy virtuální - fyzická L/S instrukce vykonávané v rámci warp jsou zaslány přes intra-chip crossbar na řadič paměti (resp. ROP) Řadič paměti je vykonává ve skupinách poloviční velikosti warp (16 přístupů) Zarovnání a slučování přístupů Pokud vlákna ve zpracovávaném půl-warp přistupují sekvenčně k souvislé a zarovnané oblasti paměti přístup je sloučen pod jednu transakci s pamětí

Fermi Vychází z předešlé architektury s tím, že vylepšuje výkonnost karty při double precision operacích přidává podporu Error Correction Codes (ECC) nahrazuje grafický systém cache pamětí pravým (Systém cache používaný v CPU) cache paměti jsou používány i při přístupu do globální paměti zvětšuje velikost sdílené paměti (sdílení paměťového prostoru s L1 cache) vylepšuje techniku a rychlost přepínání kontextů modifikuje architekturu SM (32 funkčních jednotek per SM) od revize architektury 2.1 je počet funkčních jednotek navýšen na 48

Třetí generace SM 32x CUDA Core provádí celočíselné operace i operace v plovoucí řádové čárce ALU a FPU single i double precision 64KB Sdílené paměti Konfiguračně rozdělena mezi L1 cache a sdílenou paměť (16KB x 48KB pro sdílenou paměť nebo cache) 16x L/S jednotka Jednotná cesta přístupu do paměti (dříve separována paměť textur čtení a výstupní pixel zápis) 4x SFU Speciální operace sin, cos, exp, rcp Obrázek převzat z: Whitepaper NVIDIA's Next Generation CUDA Compute Architecture: Fermi

Třetí generace SM plánování instrukcí CUDA Core seskupeny do dvou skupin v SM Tvoří dva bloky o 16 jádrech; zpracovávají warp instrukci ve dvou taktech L/S jednotky Seskupeny do jednoho bloku; výpočet dokončen ve dvou taktech SFU blok Blok tvoří čtyři jednotky pro speciální operace (sin, con,...); výpočet trvá 8 taktů Pro plánování warp instrukcí má SM k dispozici dvě plánovací jednotky (Dual Warp Scheduler) celkem čtyři výkonné bloky, kterým může být instrukce předána 2x 16CUDA Core blok, 1x SFU blok, 1x L/S blok neblokující přístup k vydávání instrukcí (instrukce s velkou latencí nebrání vydávání další instrukce jinému bloku)

Třetí generace SM plánování instrukcí Obrázek převzat z: nvidia.com

Sumární srovnání Obrázek převzat z: Whitepaper NVIDIA's Next Generation CUDA Compute Architecture: Fermi

Závěr Obecné výpočty na GPU Problémy při masivně paralelním přístupu NVIDIA CUDA Výpočetní a paměťový model Mikroarchitektura GT200 Zpracování instrukcí NVIDIA Fermi

Literatura D. Kanter: NVIDIA's GT200: Inside a Papallel Processor Whitepaper NVIDIA's Next Generation CUDA Compute Architecture: Fermi Paul H. J. Kelly, Advanced Computer Architecture Lecture notes 332 P. N. Glaskowsky: NVIDIA s Fermi: The First Complete GPU Computing Architecture Internetové zdroje: http://www.nvidia.com/