Računalniške delavnice FMF: Delavnica MPI

Podobné dokumenty
Programování založené na posílání zpráv

Vaja 2 Iskanje z razvijanjem v širino

Úvod do MPI. Úvod do MPI Operace send a recieve Blokující a neblokující posílání zpráv Blokující posílání zpráv Neblokující posílání zpráv

Ústav technické matematiky FS ( Ústav technické matematiky FS ) / 35

Računalništvo in informatika Računalniška omrežja. Računalniška omrežja. Osnovni pojmi. prof. Andrej Krajnc univ. dipl.inž.

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA

Matija Lokar: PODATKOVNE STRUKTURE VRSTA. List za mlade matematike, fizike, astronome in računalnikarje

MPI Message Passing Interface. Charakteristika

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

Pokročilé architektury počítačů

IT Arhitektura Globalno Belma Ohranović IT Auditor

Motivace. Software. Literatura a odkazy

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

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

x86 assembler and inline assembler in GCC

Proč potřebujeme komunikátory? - pokrač. Týden 4 Programování zasíláním zpráv (MP) - programování v MPI - počítání na svazcích stanic

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

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

1 Rozdělení paralelních úloh z hlediska jejich

Državni izpitni center *M * SPOMLADANSKI IZPITNI ROK RAČUNALNIŠTVO NAVODILA ZA OCENJEVANJE. Petek, 10. junij 2011 SPLOŠNA MATURA

Navodila za uporabo Garmin Nüvi 1200

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

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

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

Java Cvičení 05. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

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

Knihovny pro CUDA J. Sloup a I. Šimeček

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

Pokročilé architektury počítačů

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

Model je umělý objekt, který reflektuje a reprodukuje základní vlastnosti, vztahy (strukturu) a funkce konkrétního objektu nebo

Programski jeziki. Od problema do programa. Od problema do programa

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

dostat zdroják Petr Zemek Fakulta informačních technologií VUT v Brně izemek

Charakteristika dalších verzí procesorů v PC

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

IUJCE 07/08 Přednáška č. 6

Úvod do mobilní robotiky NAIL028

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

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

Využití paralelních výpočtů v geodézii

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY TECHNIKY PARALELNÍHO ZPRACOVÁNÍ VÝPOČTŮ

Úvod do OpenMP. Jiří Fürst

Vláknové programování část V

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

Číslicové měřicí systémy. Téma 4

Pokročilé architektury počítačů

Sazba zdrojových kód. Jakub Kadl ík

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Projekt. Projektna naloga Naprava za sušenje gela za nohte FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO

Paralelní systémy. SIMD jeden tok instrukcí + více toků dat jedním programem je zpracováváno více různých souborů dat

Intervalna ocena parametra

Architektury CISC a RISC, uplatnění v personálních počítačích

Datotečni (zbirčni) sistem - File Management System

Državni izpitni center. Osnovna raven MATEMATIKA. Izpitna pola 1. Torek, 26. avgust 2008 / 120 minut

PB071 Programování v jazyce C Jaro 2015

Nikola Tesla ( ) Pripravil : Samo Podlesek,

CUDA J. Sloup a I. Šimeček

Struktura programu v době běhu

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

Matematika v programovacích

zlatarna E.LECLERC Po ok Od 1O. januarja do 31. decembra 2O18

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

PROCESOR. Typy procesorů

Úvod do mobilní robotiky AIL028

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

Osnove programiranja 2 Naloge laboratorijskih vaj


Základy digitální techniky

Pokročilé architektury počítačů

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

PRAVILA IGRE NA SREČO LOTO (prečiščeno besedilo)

a co je operační systém?

Jiné výpočetní platformy J. Sloup, M. Skrbek, I. Šimeček

SPALNICE.

2 Datové typy v jazyce C

REALIZACE SUPERPOČÍTAČE POMOCÍ GRAFICKÉ KARTY

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

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

OSNOVNE KOMPONENTE BU OSNOVNE KOMPONENTE BARVNEGA UPRAVLJANJA. Tadeja Muck govorilne ure: ponedeljek 12:00 13:00

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

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Delo z datotekami v C#

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)

KVIZ Osnove elektrotehnike II magnetostatika

Univerzita Jana Evangelisty Purkyně v Ústí nad Labem. Přírodovědecká fakulta

Multiplatformní GUI toolkity

Nvidia CUDA Paralelní programování na GPU

Po vrsti z leve proti desni so obrazi Blaž, Erik, Dane, Andrej, Andraž, Bor.

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

Uporabniški priročnik. Kosovni management. Hermes d.o.o. Prušnikova Ljubljana-Šentvid.

ORGANIZAČNÍ A VÝPOČETNÍ TECHNIKA

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

Martin Lísal. Úvod do MPI

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Komunikacije v avtomatiki

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Základní datové struktury

Transkript:

Računalniške delavnice FMF: Delavnica MPI Matevž Jekovec matevz.jekovec@fri.uni-lj.si Laboratorij za vseprisotne sisteme UL FRI lusy.fri.uni-lj.si 18. april 2014 22. maj 2014

Motivacija Moorov zakon: število tranzistorjev v integriranih vezjih se podvoji vsaki dve leti.

Motivacija Kaj pa zmogljivost?

Motivacija Kaj pa zmogljivost? Frekvenca se poveča za faktor 1,4 vsako leto: neposredna pohitritev.

Motivacija Kaj pa zmogljivost? Frekvenca se poveča za faktor 1,4 vsako leto: neposredna pohitritev. Frekvenca Pentiuma 4 doseže 4 GHz leta 2000 (v laboratoriju tudi 10 GHz).

Motivacija Kaj pa zmogljivost? Frekvenca se poveča za faktor 1,4 vsako leto: neposredna pohitritev. Frekvenca Pentiuma 4 doseže 4 GHz leta 2000 (v laboratoriju tudi 10 GHz). Po tem frekvenca stagnira. Zmogljivost se povečuje z drugimi optimizacijami in vzporednostjo.

Družine vzporednih arhitektur Način komunikacije: z deljenim pomnilnikom, z izmenjavo sporočil.

Družine vzporednih arhitektur Način komunikacije: z deljenim pomnilnikom, z izmenjavo sporočil. Družine vzporednih arhitektur: Večjedrne arhitekture s skupnim pomnilnikom Mnogojedrne arhitekture s skupnim pomnilnikom Porazdeljene arhitekture z izmenjavo sporočil

Večjedrne arhitekture z deljenim pomnilnikom Nekaj 10 jeder na enem čipu.

Večjedrne arhitekture z deljenim pomnilnikom Nekaj 10 jeder na enem čipu. Vsa jedra imajo dostop do celotnega pomnilnika.

Večjedrne arhitekture z deljenim pomnilnikom Nekaj 10 jeder na enem čipu. Vsa jedra imajo dostop do celotnega pomnilnika. Primer: Osebni računalniki Intel/AMD.

Mnogojedrne arhitekture s skupnim pomnilnikom Več 1000 jeder na enem čipu. Jedra so enostavnejša. Nimajo vsi dostopa do vsega pomnilnika.

Mnogojedrne arhitekture s skupnim pomnilnikom Več 1000 jeder na enem čipu. Jedra so enostavnejša. Nimajo vsi dostopa do vsega pomnilnika. Predpostavka: Single-Instruction Multiple-Data

Mnogojedrne arhitekture s skupnim pomnilnikom Več 1000 jeder na enem čipu. Jedra so enostavnejša. Nimajo vsi dostopa do vsega pomnilnika. Predpostavka: Single-Instruction Multiple-Data Primer: NVidia CUDA Fermi s 16 SM are positioned around a common L2 cache. Each SM is a vertical rectangular strip that contain an orange portion (scheduler and dispatch), a green portion (execution units), and light blue portions (register file and L1 cache).

Mnogojedrne arhitekture s skupnim pomnilnikom Instruction Cache Warp Scheduler Dispatch Unit Warp Scheduler Dispatch Unit Register File (4096 x 32-bit) LD/ST LD/ST LD/ST LD/ST SFU CUDA Dispatch Port Operand Collector FP Unit INT Unit LD/ST LD/ST LD/ST LD/ST SFU Result Queue LD/ST LD/ST LD/ST LD/ST SFU LD/ST LD/ST LD/ST LD/ST SFU Interconnect Network 64 KB Shared Memory / L1 Cache Uniform Cache Fermi Streaming Multiprocessor (SM)

Porazdeljene arhitekture z izmenjavo sporočil Več 1000 vozlišč, povezanih v mrežo.

Porazdeljene arhitekture z izmenjavo sporočil Več 1000 vozlišč, povezanih v mrežo. Vsako vozlišče ima neposreden dostop do lokalnega pomnilnika.

Porazdeljene arhitekture z izmenjavo sporočil Več 1000 vozlišč, povezanih v mrežo. Vsako vozlišče ima neposreden dostop do lokalnega pomnilnika. Dostop do bolj oddaljenega pomnilnika z izmenjavo sporočil.

Porazdeljene arhitekture z izmenjavo sporočil Več 1000 vozlišč, povezanih v mrežo. Vsako vozlišče ima neposreden dostop do lokalnega pomnilnika. Dostop do bolj oddaljenega pomnilnika z izmenjavo sporočil. Primer: IBM Bluegene/L

Kako programiramo vzporedne aplikacije? Kako izgledajo vzporedne aplikacije?

Kako programiramo vzporedne aplikacije? Kako izgledajo vzporedne aplikacije? Odvisno od arhitekture!

Kako programiramo vzporedne aplikacije? Kako izgledajo vzporedne aplikacije? Odvisno od arhitekture! Deljen pomnilnik: en proces, več niti ali več procesov, izmenjava sporočil.

Kako programiramo vzporedne aplikacije? Kako izgledajo vzporedne aplikacije? Odvisno od arhitekture! Deljen pomnilnik: en proces, več niti ali več procesov, izmenjava sporočil. Porazdeljene arhitekture: več procesov, izmenjava sporočil.

Pohitritev aplikacije POZOR: Premisliti moramo, kaj bomo sploh povzporejali!

Pohitritev aplikacije POZOR: Premisliti moramo, kaj bomo sploh povzporejali! Če so vsak naslednji korak algoritma odvisen od prejšnjega, je aplikacija inherentno zaporedna (inherently sequential) in ni mogoče povzporejanje. Primer: iskanje po drevesu v globino.

Pohitritev aplikacije POZOR: Premisliti moramo, kaj bomo sploh povzporejali! Če so vsak naslednji korak algoritma odvisen od prejšnjega, je aplikacija inherentno zaporedna (inherently sequential) in ni mogoče povzporejanje. Primer: iskanje po drevesu v globino. Če so koraki popolnoma neodvisni med seboj, je aplikacija sramotno povzporedljiva (embarrassingly parallel). Primer: iskanje števila po neurejenem polju števil.

Pohitritev aplikacije POZOR: Premisliti moramo, kaj bomo sploh povzporejali! Če so vsak naslednji korak algoritma odvisen od prejšnjega, je aplikacija inherentno zaporedna (inherently sequential) in ni mogoče povzporejanje. Primer: iskanje po drevesu v globino. Če so koraki popolnoma neodvisni med seboj, je aplikacija sramotno povzporedljiva (embarrassingly parallel). Primer: iskanje števila po neurejenem polju števil. Amdahlov zakon: Največja možna pohitritev algoritma je S(P) = 1 s + 1 s, P kjer je s delež inherentno zaporedne kode in P število procesorjev.

MPI MPI ali Message Passing Interface je programski standard, ki vsebuje funkcionalnosti, potrebne za razvoj aplikacij za porazdeljen sisteme. Zasnovan je bil leta 1991.

MPI MPI ali Message Passing Interface je programski standard, ki vsebuje funkcionalnosti, potrebne za razvoj aplikacij za porazdeljen sisteme. Zasnovan je bil leta 1991. Podpira navidezno topologijo mreže (naslavljanje), sinhronizacijo procesorjev in učinkovito medsebojno komunikacijo.

MPI MPI ali Message Passing Interface je programski standard, ki vsebuje funkcionalnosti, potrebne za razvoj aplikacij za porazdeljen sisteme. Zasnovan je bil leta 1991. Podpira navidezno topologijo mreže (naslavljanje), sinhronizacijo procesorjev in učinkovito medsebojno komunikacijo. Je namenjen porazdeljenim arhitekturam, vendar deluje tudi na večjedrnih.

MPI MPI ali Message Passing Interface je programski standard, ki vsebuje funkcionalnosti, potrebne za razvoj aplikacij za porazdeljen sisteme. Zasnovan je bil leta 1991. Podpira navidezno topologijo mreže (naslavljanje), sinhronizacijo procesorjev in učinkovito medsebojno komunikacijo. Je namenjen porazdeljenim arhitekturam, vendar deluje tudi na večjedrnih. Je prirejen za številne programske jezike: poleg C, C++ in Fortran tudi za Python, Ocaml, Javo, Matlab, R itd.

MPI MPI ali Message Passing Interface je programski standard, ki vsebuje funkcionalnosti, potrebne za razvoj aplikacij za porazdeljen sisteme. Zasnovan je bil leta 1991. Podpira navidezno topologijo mreže (naslavljanje), sinhronizacijo procesorjev in učinkovito medsebojno komunikacijo. Je namenjen porazdeljenim arhitekturam, vendar deluje tudi na večjedrnih. Je prirejen za številne programske jezike: poleg C, C++ in Fortran tudi za Python, Ocaml, Javo, Matlab, R itd. Open MPI je ena izmed knjižnic, ki se podrejajo standardu MPI-2.

Uporaba MPI v C Začnimo s Hello world v programskem jeziku C: 1 # include <stdio.h> 2 3 int main ( int argc, char * argv []) { 4 printf (" Pozdravljen, svet!\n"); 5 6 return 0; 7 }

Uporaba MPI v C Dodamo inicializacijo MPI in izpis procesa: 1 # include <stdio.h> 2 # include <mpi.h> 3 4 int main ( int argc, char * argv []) { 5 int rank, size ; 6 7 MPI_Init (& argc, & argv ); 8 MPI_Comm_rank ( MPI_COMM_WORLD, & rank ); 9 MPI_Comm_size ( MPI_COMM_WORLD, & size ); 10 11 printf ("Svet, jaz sem proces %d od %d!\n", rank, size ); 12 13 MPI_ Finalize (); 14 15 return 0; 16 }

Uporaba MPI v C Aplikacijo prevedemo z ukazom mpicc helloworld-mpi.c -o helloworld-mpi Aplikacijo zaženemo z ukazom mpirun -n <število procesov>./helloworld-mpi mpirun -n 5./helloworld-mpi Svet, jaz sem proces 1 od 5! Svet, jaz sem proces 0 od 5! Svet, jaz sem proces 4 od 5! Svet, jaz sem proces 3 od 5! Svet, jaz sem proces 2 od 5!

Uporaba MPI v C Aplikacijo prevedemo z ukazom mpicc helloworld-mpi.c -o helloworld-mpi Aplikacijo zaženemo z ukazom mpirun -n <število procesov>./helloworld-mpi mpirun -n 5./helloworld-mpi Svet, jaz sem proces 1 od 5! Svet, jaz sem proces 0 od 5! Svet, jaz sem proces 4 od 5! Svet, jaz sem proces 3 od 5! Svet, jaz sem proces 2 od 5! Opomba: Vrstni red izvajanja ni determinističen!

Komunikacija Komunikacija lahko poteka na dva načina:

Komunikacija Komunikacija lahko poteka na dva načina: prek mrežnega diska,

Komunikacija Komunikacija lahko poteka na dva načina: prek mrežnega diska, prek MPI.

Komunikacija Komunikacija lahko poteka na dva načina: prek mrežnega diska, prek MPI. Funkciji MPI za komunikacijo: int MPI_Send(const void *buf, int count, MPI_Datatype, int dest, int tag, MPI_Comm comm) int MPI_Recv(void *buf, int count, MPI_Datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)

Komunikacija Komunikacija lahko poteka na dva načina: prek mrežnega diska, prek MPI. Funkciji MPI za komunikacijo: int MPI_Send(const void *buf, int count, MPI_Datatype, int dest, int tag, MPI_Comm comm) int MPI_Recv(void *buf, int count, MPI_Datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) Opomba: Funkciji sta sinhroni in čakata, dokler se prenos ne konča.

Naloge Današnje naloge: Napišite program, ki s standardnega vhoda prebere 1 vrednosti polja in vzporedno sešteje njegove elemente. 2 vrednosti dveh matrik in jih vzporedno sešteje. 3 vrednosti dveh matrik in jih vzporedno zmnoži. Algoritme najprej preizkusite lokalno, nato pa na gruči Raspberry π.

Naloge Današnje naloge: Napišite program, ki s standardnega vhoda prebere 1 vrednosti polja in vzporedno sešteje njegove elemente. 2 vrednosti dveh matrik in jih vzporedno sešteje. 3 vrednosti dveh matrik in jih vzporedno zmnoži. Algoritme najprej preizkusite lokalno, nato pa na gruči Raspberry π. Za pridne: 1 Izmerite razliko v hitrosti izvajanja, če preberete matriko z mrežnega diska ali prek MPI. 2 Poglejte Cannonov algoritem za množenje matrik.

Uvod Vzporedne arhitekture Dodatno: Zagon MPI v gruc i Ustvarimo datoteko z naslovi rac unalnikov: pi@10.100.0.10 pi@10.100.0.11 pi@10.100.0.12 pi@10.100.0.13 pi@10.100.0.14 pi@10.100.0.15 Povzporejanje aplikacij MPI

Uvod Vzporedne arhitekture Povzporejanje aplikacij Dodatno: Zagon MPI v gruc i Ustvarimo datoteko z naslovi rac unalnikov: pi@10.100.0.10 pi@10.100.0.11 pi@10.100.0.12 pi@10.100.0.13 pi@10.100.0.14 pi@10.100.0.15 Aplikacijo zaz enemo z ukazom: mpirun --hostfile my hostfile helloworld-mpi MPI