267
MPI Workshop @ SRCE / radionica no.1 (1 od 258) MPI Workshop @ SRCE MPI Workshop @ SRCE radionica no.1 Uvod u Message Passing Interface Sveučilišni računski centar, Zagreb 28. lipnja – 30. lipnja, 2005.

MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (1 od 258)

MPI Workshop @ SRCEMPI Workshop @ SRCE

radionica no.1Uvod u Message Passing Interface

Sveučilišni računski centar, Zagreb28. lipnja – 30. lipnja, 2005.

Page 2: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (2 od 258)

InfoInfo--kutakkutak

� Predavači� Stjepan Buljat, apsolvent FER-a� mr.sc. Damir Danijel Žagar, SRCE – sektor za računalne sustave

� Trajanje radionice� 3 dana po 4 školska sata (45min)� Pauza izmeñu dva školska sata (15min)

� Info� Materijali : kopija PowerPoint prezentacije� Prva od dvije predviñene radionice na temu MPI modela PP-a� Uvodna radionica u message-passing model PP-a� Svi slajdovi se nalaze na http://www.srce.hr

Page 3: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (3 od 258)

InfoInfo--kutakkutak

� Pitanja su dobrodošla ☺

� Tehničke informacije� Koristiti će se klaster ACER računala� 8 čvorova + frontend

• CPU– 2 x 1.13 GHz, Intel Pentium III

• RAM– 1 GB

• NIC– 100 MBit

Page 4: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (4 od 258)

Pregled rada Pregled rada –– prvi danprvi dan

� Uvod u paralelni svijet– Kratki pregled paralelnog računanja

» Primjene– Arhitekture računala

» Jednoprocesorska arhitektura

» Višeprocesorska arhitektura» Flynn-ova taksonomija

» Što je klaster?

– Paralelni programski modeli

» Message-passing model– Paralelne programske paradigme

» Task farming / Master – Slave

» SPMD» Data pipelining

» Divide & Conquer

Page 5: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (5 od 258)

Pregled rada Pregled rada –– prvi danprvi dan– Paralelne programske tehnologije

» MPI

» PVM

» Paralelizirajući prevoditelji» P-Threads

» OpenMP

» HPF

» Co-Array Fortran» POOMA and HPC++

» Komponentni modeli / Hibridi

» Pravila odabira tehnologije

� Metodologija dizajna paralelnih aplikacija– Uvod

– Uzroci paralelnog overhead-a– Coarse vs. Fine Grained parallelism

Page 6: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (6 od 258)

Pregled rada Pregled rada –– prvi danprvi dan– Strategije razvoja paralelnih aplikacija– Metodološki dizajn paralelnih algoritama

– Primjer dizajna paralelnog algoritma – Atmosferski model

– Savjeti– Analiza performansi

» A priori analiza

» Ubrzanje

» Efikasnost» Amdahl-ov zakon

» Rad i dodatno opterećenje

» Skalabilnost

Page 7: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (7 od 258)

Pregled rada Pregled rada –– drugi dandrugi dan

� Uvod u MPI– Što je to MPI?– Povijest MPI-a– Osnove MPI komunikacija– Svojstva MPI-a– Prevoñenje i pokretanje MPI aplikacija

� Prvi koraci – programiranje u MPI-u– Uvod– Inicijalizacija MPI– Terminiranje MPI

» “Hello World” aplikacija– Komunikatori, procesi,…– “[extended] Hello World” aplikacija– G6 – najosnovniji skup MPI funkcija

» “G6” aplikacija

Page 8: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (8 od 258)

Pregled rada Pregled rada –– drugi dandrugi dan

� Point-2-Point komunikacija– Osnovni MPI tipovi podataka– Uvod u p2p komunikaciju– Komunikacijski mod – standard send– Komunikacijski mod – synchronous send– Komunikacijski mod – buffered send– Komunikacijski mod – ready send– Send-receive– Informacije o porukama– p2p aplikacija – mjerenje vremena– p2p aplikacija – numerička integracija

� Neblokirajuća komunikacija– Uvod u neblokirajuću aplikaciju– Neblokirajuće send funkcije

» neblokirajući standard-send» neblokirajući synchronous-send

Page 9: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (9 od 258)

Pregled rada Pregled rada –– drugi dandrugi dan» Neblokirajući buffered-send» Neblokirajući ready-send

– Neblokirajuća receive funkcija

– Operacije za testiranje završtka komunikacije» Veći broj aktivnih komunikacija

» Ostale pomoćne funkcije

Page 10: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (10 od 258)

Pregled rada Pregled rada –– treći dantreći dan

� Ponavljanje : MPI funkcije– C funkcije

– Fortran funkcije

� Zadatak 1 : Računanje broja pi– Uvod

– Upute– Rješenje

� Zadatak 2 : Množenje matrica– Uvod– Upute

– Rješenje

� Pregled : Obrañene teme� Pregled : Teme sljedeće radionice

Page 11: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (11 od 258)

Predavači:

mr.sc. Damir Danijel Žagar

Stjepan Buljat

Poglavlje 1Poglavlje 1Uvod u paralelni svijetUvod u paralelni svijet

Page 12: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (12 od 258)

1.1 Kratki pregled paralelnog računanja1.1 Kratki pregled paralelnog računanja

� Zašto paralelizam?� Apsolutna fizikalna ograničenja

• brzina svjetlosti, c = 299792458 m/s• brzina elektrona u bakru, v = 9 cm/ns

– problem kašnjenja

– manje komponente, bliže rasporeñene

• ograničenja minijaturizacije, CMOS @ 65-90µm• kvantni efekti• “heat dissipation” pri visokim frekvencijama

� Ekonomska ograničenja• procesori većeg radnog takta znatno skuplji

� Ograničenja performansi• 2x frekvencija � ne daje dvostruko ubrzanje

Poglavlje 1 – Uvod u paralelni svijet

Page 13: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (13 od 258)

1.1 Kratki pregled paralelnog računanja1.1 Kratki pregled paralelnog računanja

� Prednosti paralelizma� rješavanje većih problema u jednakom vremenskom periodu� rješavanje jednakih problema u kraćem periodu� manji troškovi (cluster)� iskorištavanje udaljenih računalnih resursa (grid)

� skalabilnost

� Tri velike prepreke paralelizmu:� Hardware� Software� Algoritmi

� “Computational Science”

Poglavlje 1 – Uvod u paralelni svijet

hardware

software

algoritmi

Page 14: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (14 od 258)

1.1.1 Primjene1.1.1 Primjene

� atmosferske simulacije (predviñanje vremena, uragana,… )

� modeliranje lijekova� geologija (istraživanje nalazišta nafte, predviñanje potresa)

� računalna grafika (animacija, specijalni efekti, renderiranje,…)

� ekonomska modeliranja� itd.

Poglavlje 1 – Uvod u paralelni svijet

Page 15: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (15 od 258)

1.1.1 Primjene 1.1.1 Primjene –– eksperimentalna matematikaeksperimentalna matematika

• svaka od ovih jednakosti je provjerena s preciznošću od nekoliko tisuća znamenki• dokaz još nije poznat!

Poglavlje 1 – Uvod u paralelni svijet

Page 16: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (16 od 258)

1.2 Arhitekture računala1.2 Arhitekture računala

� Jednoprocesorska arhitektura� Višeprocesorska arhitektura

� kontrolni mehanizmi im mogu biti:• centralizirani• distribuirani

� Paralelno vs. Distribuirano računarstvo� paralelno - više PE rade konkurentno na istom problemu� distribuirano – PE ne dijele memoriju i sistemski sat� distribuirano računarstvo je podskup paralelnog

Poglavlje 1 – Uvod u paralelni svijet

Page 17: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (17 od 258)

1.2.1 Jednoprocesorska arhitektura1.2.1 Jednoprocesorska arhitektura

� Jednoprocesorska arhitektura� poznavanje problema paralelnih arhitektura zahtijeva

poznavanje problema jednoprocesorske arhitekture!� glavne komponente jednoprocesorskog sustava

• CPU (Central Processing Unit)

– “Srce” računala

– izvodi sve proračune i nadgleda ostale dijelove računala

– važniji dijelovi CPU-a» ALU (Arithmetic Logic Unit)

» FPU (Floating Point Unit)

» L/SU (Load/Store Unit)

» registri» PC (Program Counter)

» memorijsko sučelje

Poglavlje 1 – Uvod u paralelni svijet

Page 18: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (18 od 258)

1.2.1 Jednoprocesorska arhitektura1.2.1 Jednoprocesorska arhitektura

– podjela s obzirom na instrukcijski set» CISC (Complex Instruction Set Computer)

» RISC (Reduced Instruction Set Computer)

• Memorijski sustav– jako kompleksan s mnoštvom faktora

» veličina memorije

» kašnjenje i memorijska hijerarhija

» protok» zaštita memorije

– kašnjenje je usko povezano s fizikalnim ograničenjima

– poluvodičke tehnologije» SRAM (Static Random Access Memory)

� brži od DRAM-a, ali znatno manje gustoće (manje bitova po čipu)

» DRAM (Dynamic Random Access Memory)

� sporiji, veće gustoće i manje se grije (heat dissipation)

Poglavlje 1 – Uvod u paralelni svijet

Page 19: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (19 od 258)

1.2.1 Jednoprocesorska arhitektura1.2.1 Jednoprocesorska arhitektura

– hijerarhijska memorija (cache memory)» djelomično rješenje problema kašnjenja

» nekoliko levela hijerarhije (L1, L2)

» L1 – najmanja i najbrža on-chip memorija (SRAM)

• I/O i mreže– I/O ima slične probleme kao i memorija

» porast gustoće i veličine, ali kašnjenje ostaje nepromijenjeno

» kašnjenje reda veličine 10-3 s (elektromehanički ureñaji)» rješenje – korištenje cache memorije (DRAM)

– Mreže su se manje mijenjale

» Ethernet uveden prije 22 godine!» u zadnjih nekoliko godina poboljšanja – 100Mb Ethernet, gigabitni

Ethernet – Infiniband,…; optičke tehnologije,…

» ograničenja usko povezana s brzinom svjetlosti� kašnjenje ne može nikad biti manje od 3 ns po metru!

Poglavlje 1 – Uvod u paralelni svijet

Page 20: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (20 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

� Višeprocesorske arhitekture� Memorijski paralelizam

• Raspodijeljena memorija (Distributed Memory)– najjednostavniji oblik paralelnog sustava (hardware’s point of view)

– odvojena računala spojena interkomunikacijskom mrežom– dva pristupa

» distributed shared memory model (DSM)� virtual DSM = shared-memory prog. model na distributed mem. HW

» shared-nothing model– niska cijena i relativno visoke performanse– umrežena osobna računala ili radne stanice

» NOW – Network of Workstations» Beowulf clusters (Thomas Sterling & Donald Becker)» Cluster vs/= MPP – Massively Parallel Processor

� MPP koristi proprietary i specijalizirani software & interconnect-e ??

» Cluster (single processor | SMP – Symmetric MultiProcessors)

Poglavlje 1 – Uvod u paralelni svijet

Page 21: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (21 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

• Dijeljena memorija (Shared Memory)

– složeniji pristup (računala su meñusobno “jače” povezana)– jedan fizikalni adresni prostor s podrškom za virtualne adresne prostore– pristup udaljenoj memoriji: manja memorijska kašnjenja i veći protok– problem skalabilnosti, max 128 CPU – cijena(switch) ~ broj(cpu)2

– problem s konzistencijom (consistency) i koherencijom (coherency)

– dva pristupa (sa stajališta cache coherency)» UMA (Uniform Memory Access)

� svaka memorija i cache memorija su spojeni na sve ostale� svaki dio promatra sve memorijske operacije i osigurava koherenciju� vrijeme pristupa bilo kojoj memorijskoj adresi je jednako – uniformno� ovaj pristup se još naziva Symmetric Multiprocessor (SMP)

� loša skalabilnost» NUMA (Nonuniform Memory Access)

� ne zahtijeva da je vrijeme pristupa svakoj mem. adresi uniformno� bolja skalabilnost� CC-NUMA = Cache Coherent NUMA

Poglavlje 1 – Uvod u paralelni svijet

Page 22: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (22 od 258)

........P

Memorija

P

P P

PMemorija

P

P P

Interconnect (bus)

periferija

cc-NUMA

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

� sva memorija je globalno organizirana pa je vrijeme pristupa fizički lokalnoj i udaljenoj memoriji različito

� CC-NUMA takoñer koristi second-level interconnect

� UMA/SMP unutar jednog sustva, NUMA preko svih sustava

Poglavlje 1 – Uvod u paralelni svijet

Page 23: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (23 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

Poglavlje 1 – Uvod u paralelni svijet

Interconnect (bus)

Memorija Memorija Memorija Memorija

CPU CPU CPU

shared memory model

UMA – shared memory model

Sabirnica (bus)

P1

Cache

P2

Cache

Pn

Cache

System memory

…..

Page 24: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (24 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

Poglavlje 1 – Uvod u paralelni svijet

distributed memory model

Interconnect (neka vrsta)

CPU

Memorija NIC

CPU

Memorija NIC

CPU

Memorija NIC

Page 25: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (25 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

• Ostali oblici memorijskog paralelizma– u ovim oblicima CPU je prilagoñen za rad s memorijskim sustavom– SIMD (Single-Instruction Multiple-Data)

» pojednostavljeni CPU-i spojeni na memoriju» svaki CPU izvršava istu instrukciju» pogodno za data parallel programski model» nije general purpose sustav

– Vector Computing» CPU ima malo eksplicitnog paralelizma, ali memorija je paralelizirana» operacije se izvode na vektorima» jedna instrukcija može obaviti više operacija (pipelined FPU)

» vektori spremljeni u vektorske registre» prijenos podataka iz memorije u vektorske registre koristi višestruke

memorijske spremnike (interleaved memory banks)

» visoki protok podataka izmeñu CPU-a i memorije – za red veličine više od ne-vektorskih računala

Poglavlje 1 – Uvod u paralelni svijet

Page 26: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (26 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

� CPU paralelizam• Superskalarno procesiranje

– može obaviti više od jedne operacije u jednom vremenskom ciklusu– performanse se ostvaruju na ne-vektorskom kôdu

– superskalarni procesor ima paralelizma koliko ima funkcionalnih jedinica

– npr. CPU se sastoji od dvije funkcionalne jedinice: FPU i ALU te dva tipa registara Floating-Point-Registers FPR i General-Purpose-Registers GPR.

» onda ovaj CPU može započeti istovremeno obavljanje dvaju operacija, jedne s floating-point brojevima, drugu s integer brojevima

– instruction-level parallelism (ILP)

» odvojene instrukcije se paralelno obavljaju– prednosti ILP-a se mogu iskoristiti preko:

» CPU-a; samostalno mijenja poredak obavljanja instrukcija

» prevoditelja; preporuka je da prevoditelj rasporeñuje poredak instrukcija

Poglavlje 1 – Uvod u paralelni svijet

Page 27: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (27 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

• Eksplicitno paralelne instrukcije– upotreba svakog dijela CPU-a je enkodirana unutar instrukcijskog seta

– svaka instrukcija sadrži eksplicitne pod-instrukcije za svaki funkcionalni dio procesora

– very long instruction word (VLIW) instruction set architecture (ISA)

– VLIW sustavi se oslanjaju na prevoditeljsko rasporeñivanje instrukcija

• SIMD i vektorska računala– obavljanje iste operacije na različitim podacima

» uz pomoć više funkcionalnih jedinica– SIMD

» s jednom instrukcijom može se obaviti više operacija

» npr. zbrajanje 3 broja s druga 3 broja koristeći 3 različita zbrajala

– Vektorska računala» ista operacija na skupu podataka – vektoru

» koristi pipelining i neke druge tehnologije (chaining)

Poglavlje 1 – Uvod u paralelni svijet

Page 28: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (28 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

• Višenitnost (multithreading)

– thread = skup instrukcija koji se izvodi u virtualnom adresnom prostoru

– thread model nije samo SW model nego je i HW model

– Simultaneous multithreading (SMT)

» dopušta da više niti izvršava svoje instrukcije u istom vremenskom ciklusu

» pruža maksimalno iskorištenje procesora

» prevoditelj | programer mora podijeliti aplikaciju na više odvojenih niti

– Fine-grained multithreading (FGMT)

» jedna nit u jednom vremenskom trenutku

» CPU može mijenjati izvršavanje niti u jednom vremenskom ciklusu» nit koja mora čekati na obavljanje neke spore operacije (npr. čitanje iz memorije) može se suspendirati� prednost: skrivanje memorijskog kašnjenja

Poglavlje 1 – Uvod u paralelni svijet

Page 29: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (29 od 258)

1.2.2 Višeprocesorska arhitektura1.2.2 Višeprocesorska arhitektura

� I/O i mreže• manje popularno područje od CPU-a i memorije• Redundant Arrays of Inexpensive Disks (RAID)

– Garth Gibson i Randy Katz 1988.

– početno 5 RAID levela, kasnije prošireno (danas oko 11 levela)

» različita uporaba većeg broja diskova kako bi se pružila veća otpornost na greške i bolje performanse

– HW RAID verzija

» upravljana hardware-om» izgled jednog diska, puno bržeg i/ili pouzdanijeg diska

– SW RAID verzija

» softverski upravljani odvojeni diskovi

• Multiple Path Paralellism

– svaka putanja (path) nosi dio prometa

– fizički odvojene žice za svaki bit

Poglavlje 1 – Uvod u paralelni svijet

Page 30: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (30 od 258)

1.2.3 Flynn1.2.3 Flynn--ova taksonomijaova taksonomija

� Prva klasifikacija računalnih arhitektura – Flynn- ova taksonomija iz 1966. god.� SISD (Single Instruction – Single Data)� MISD (Multiple Instruction – Single Data)� SIMD (Single Instruction – Multiple Data)� MIMD (Multiple Instruction – Multiple Data)

� Ovakva podjela se koristi i dan danas uz neke dodatne podjele MIMD modela – u nastavku…

Poglavlje 1 – Uvod u paralelni svijet

Page 31: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (31 od 258)

1.2.3 Flynn1.2.3 Flynn--ova taksonomijaova taksonomija

� SISD(Single Instruction – Single Data)� standardno računalo s jednim procesorom� poznato još kao i von Neumann-ov model

Poglavlje 1 – Uvod u paralelni svijet

podatak

PROCESOR

MEMORIJA

instrukcija

Page 32: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (32 od 258)

1.2.3 Flynn1.2.3 Flynn--ova taksonomijaova taksonomija

� SIMD(Single Instruction – Multiple Data)� jednostavni za programiranje� specijalizirana računala: prognoza vremena, procesiranje slike,...

Poglavlje 1 – Uvod u paralelni svijet

podaci

instrukcija

Programska memorija

Upravljanje

procesor

procesor

procesor

Memorija podataka

Page 33: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (33 od 258)

1.2.3 Flynn1.2.3 Flynn--ova taksonomijaova taksonomija

� MISD(Multiple Instruction – Single Data)� više istovremenih operacija na istom podatku� nije previše koristan model

Poglavlje 1 – Uvod u paralelni svijet

PROCESOR

podatak

MEMORIJA

instrukcije

Page 34: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (34 od 258)

1.2.3 Flynn1.2.3 Flynn--ova taksonomijaova taksonomija

� MIMD(Multiple Instruction – Multiple Data)� Dijele se na shared-memory(SM) i distributed-memory(DM)

� SM model se dijeli na bus-based i switch-based arhitekturu� DM model se dijeli na statički i dinamički

Poglavlje 1 – Uvod u paralelni svijet

procesori

memorija

instrukcije

Page 35: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (35 od 258)

1.2.4 Što je klaster?1.2.4 Što je klaster?

� Jedan oblik MIMD modela računala je KLASTER� “skup samostalnih računala meñusobno povezanih računalnom

mrežom koji djeluju kao jedinstveni, integrirani računalni resurs”

� “Poor man’s MPP”� Podjela no.1

� Beowulf klasteri� NOW (Network of Workstations)

� Podjela no.2� HPC (High Performance Computing)� HTC (High Throughput Computing)� HA (High Availability)

Poglavlje 1 – Uvod u paralelni svijet

Page 36: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (36 od 258)

1.2.4 Što je klaster?1.2.4 Što je klaster?

� Klaster se sastoji od:� Čvorova

• Frontend

• Compute

� Računalne mreže� Operativnog sustava� Cluster Middleware

• job management system

• monitoring

• file system

Poglavlje 1 – Uvod u paralelni svijet

compute čvorovi

privatna mreža

frontendsučelje privatne mreže

sučeljejavnemreže

korisnici

Beowulf klaster

Page 37: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (37 od 258)

1.2.4 Što je klaster?1.2.4 Što je klaster?

� Beowulf klasteri imaju samo jednu namjenu� dodatna računalna snaga za rješenje nekog računalnog

problema

� Zbog toga, zahtjevi aplikacije trebaju diktirati odabir HW/SW konfiguracije klastera� rješenje dizajna klastera? = “Ovisi o vašoj aplikaciji!”� pri razvoju aplikacije za klaster treba poznavati karakteristike

klastera, njegova ograničenja:• komunikacijska propusnost• kašnjenje• količina slobodne memorije• ....

Poglavlje 1 – Uvod u paralelni svijet

Page 38: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (38 od 258)

1.3 Paralelni programski modeli1.3 Paralelni programski modeli

� Poželjna svojstva paralelnog modela:• Apstrakcija (abstraction)

– svojstvo serijskih programskih okruženja

• Modularnost (modularity)

– svojstvo serijskih programskih okruženja

• Konkurentnost (concurrency) i komunikacija (communication)

– osnovni preduvjet paralelizma!

• Skalabilnost (scalability)

• Lokalnost (locality)

• Potreba za visokim performansama (high performance)

• Heterogenost arhitektura (diversity of architecture)

Poglavlje 1 – Uvod u paralelni svijet

Page 39: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (39 od 258)

1.3 Paralelni programski modeli1.3 Paralelni programski modeli

� Data Parallelism vs. Task Parallelism

� data parallelism

• konkurentno izvršavanje istih operacija nad različitim podacima

� task parallelism

• konkurentno izvršavanje razl. operacija nad istim | različitim podacima

� većina problema u većem postotku sadrži podatkovni paralelizam nego task paralelizam!

� Explicit vs. Implicit Parallelism

� eksplicitni paralelizam• programer mora eksplicitno specificirati aktivnosti svake konkurentne

niti koje čine paralelno računanje• primjer – Message Passing Interface (MPI)

Poglavlje 1 – Uvod u paralelni svijet

Page 40: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (40 od 258)

1.3 Paralelni programski modeli1.3 Paralelni programski modeli

� implicitni paralelizam• programiranje na višem nivou apstrakcije gdje je paralelizam

implicitan, skriven• prevoditelj | biblioteka mora implementirati paralelizam efikasno i

ispravno• primjer – High Performance Fortran (HPF)

– u osnovi data parallel jezik

– običan, sekvencijalni Fortran 90 kôd s dodatnim direktivama

� Shared Memory vs. Distributed Memory

� dijeljena memorija• programer mora definirati aktivnosti skupa procesora koji komuniciraju

putem čitanja/pisanja iz/u dijeljene memorije• prednost – programer se ne mora zamarati s distribucijom podataka

Poglavlje 1 – Uvod u paralelni svijet

Page 41: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (41 od 258)

1.3 Paralelni programski modeli1.3 Paralelni programski modeli

� raspodijeljena memorija• procesi imaju samo lokalnu memoriju pa programer mora koristiti

neke druge oblike komunikacije meñu procesima (message passing, remote procedure calls)

• prednost – programer ima eksplicitnu kontrolu nad razdiobom podataka i komunikacijom

– veće performanse na velikim DM paralelnim računalima

� Ostale programske paradigme� object-oriented programming (OOP)

• enkapsulacija, polimorfizam, nasljeñivanje i apstrakcija• izvorno sekvencijalna paradigma

– ali principi su relevantni i za paralelni svijet

• npr. prikladne apstrakcije mogu skriti paralelizam kad on komplicira programiranje

Poglavlje 1 – Uvod u paralelni svijet

Page 42: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (42 od 258)

1.3 Paralelni programski modeli1.3 Paralelni programski modeli

� single-program multiple-data (SPMD)• nije usko povezana paradigma s nekim programskim modelom• svi procesori izvršavaju istu aplikaciju• svaki procesor ima vlastitu kontrolnu nit (thread of control) pa može

krenuti drugim putanjama kroz aplikaciju nego ostali procesori• koriste se sinkronizacijski mehanizmi• jako intuitivan model• može se koristiti sa sustave s dijeljenom i raspodijeljenom memorijom• često se koristi u message passing modelu • postoje i primjene u eksplicitno paralelnim jezicima

– Co-Array Fortran

Poglavlje 1 – Uvod u paralelni svijet

Page 43: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (43 od 258)

1.3 Paralelni programski modeli1.3 Paralelni programski modeli

� Podjele PP modela su brojne, ali najčešći modeli su:� Podatkovni paralelizam (data parallelism)

� Kontrolni paralelizam (control parallelism)

� Model temeljen na izmjeni poruka (message passing - MP)

� Single Program – Multiple Data model (SPMD)� Pozivi udaljenih procedura (Remote Procedure Call - RPC)

� Aktivne Poruke (Active Messages - AM)

Poglavlje 1 – Uvod u paralelni svijet

Page 44: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (44 od 258)

1.3.1 Message Passing model1.3.1 Message Passing model

Poglavlje 1 – Uvod u paralelni svijet

MEMORIJA

PROCESOR

MEMORIJA

PROCESOR

MEMORIJA

PROCESOR…

komunikacijska mreža

Page 45: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (45 od 258)

1.4 Paralelne programske paradigme1.4 Paralelne programske paradigme

� Postoji velik broj podjela paralelnih programskih paradigmi, a ovdje će biti prikazana podjela za koju se smatra da je najopćenitija i najčešća:� Task farming (master/slave)� Single Program – Multiple Data (SPMD)� Data pipelining� Divide and Conquer� Speculative Parallelism

Poglavlje 1 – Uvod u paralelni svijet

Page 46: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (46 od 258)

1.4.1 Task1.4.1 Task--Farming/MasterFarming/Master--SlaveSlave

Poglavlje 1 – Uvod u paralelni svijet

POSAO

OBAVLJEN!!

posao kojeg

treba

paralelizirati

podijeli poslove meñu task-ovima

0101001011

0101001011

0101001011

0101001011

0101001011

0101001011

0101001011

slaveČVOR

slaveČVOR

slaveČVOR

0101001011

masterČVOR

slaveČVOR

010101011111100000

slave-1 slave-2 slave-3 slave-4

Page 47: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (47 od 258)

1.4.2 SPMD1.4.2 SPMD

Poglavlje 1 – Uvod u paralelni svijet

raspodijeli podatke

računajizmijeni podatke

računaj

računajizmijeni podatke

računaj

računajizmijeni podatke

računaj

računajizmijeni podatke

računaj

skupi podatke

Page 48: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (48 od 258)

1.4.3 Data Pipelining1.4.3 Data Pipelining

� Neke od primjena:� instrukcijski cjevovod u CPU� vektorski procesori� procesiranje signala� grafika� shell programi u UNIX-u (cat file.txt | grep “hr”)

Poglavlje 1 – Uvod u paralelni svijet

dio-1 dio-2 dio-3ulaz izlaz

proces 0 proces 1 proces 2

Page 49: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (49 od 258)

1.4.4 Divide & Conquer1.4.4 Divide & Conquer

Poglavlje 1 – Uvod u paralelni svijet

podijeli

glavniproblem

spoji

pot-problemi

Page 50: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (50 od 258)

1.5 Paralelne programske tehnologije1.5 Paralelne programske tehnologije

� Message Passing Interface (MPI)� Parallel Virtual Machine (PVM)� Paralelizirajući prevoditelji� P-Threads

� OpenMP

� High Performance Fortran

� Co-Array Fortran

� POOMA i HPC++

� Komponentni modeli� Hibridni modeli

Poglavlje 1 – Uvod u paralelni svijet

Page 51: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (51 od 258)

1.5.1 MPI1.5.1 MPI

� Specifikacija za skup funkcija koje upravljaju tokom podataka meñu skupom procesa koji meñusobno komuniciraju

� podrška za C, C++ i Fortran� MPI aplikacije se najčešće implementiraju SPMD modelom� prednosti

� skalabilnost i prenosivost

� mnoštvo biblioteka koje pružaju high-performance implementacije poznatih algoritama

� nedostatak� eksplicitni message-passing stil dodatno opterećuje programera

Poglavlje 1 – Uvod u paralelni svijet

Page 52: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (52 od 258)

1.5.2 PVM1.5.2 PVM

� prvi de-facto standard za implementaciju prenosivih message-passing aplikacija� prethodnik MPI-a

� cilj PVM- a� prenosivost, uz žrtvovanje optimalnih performansi� danas se koristi na NOW sustavima

� virtual machine� skup heterogenih umreženih host-ova koji se logički predstavljaju

kao jedno veliko paralelno računalo

� prednosti� izvršavanje aplikacije na umreženom skupu host-ova

• još bolje ako su host-ovi heterogeni

Poglavlje 1 – Uvod u paralelni svijet

Page 53: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (53 od 258)

1.5.2 PVM1.5.2 PVM

� funkcije za kontrolu procesa� fault tolerance

� nedostaci� slabe komunikacijske performanse� manji skup komunikacijskih funkcija od MPI-a

� MPI je uglavnom “bolje” rješenje jer se razvija na svim dijelovima gdje mu nedostaje funkcionalnosti koju ima PVM� ali PVM i dalje ima bolju funkcionalnost u nekim dijelovima

Poglavlje 1 – Uvod u paralelni svijet

Page 54: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (54 od 258)

1.5.3 Paralelizirajući prevoditelji1.5.3 Paralelizirajući prevoditelji

� najpoželjnija tehnologija� automatska ekstrakcija paralelizma iz sekvencijalnog kôda� korijeni iz nekih automatskih metoda u vekt. računalima� ova tehnologija još nije usporediva s autom. vektorizacijom

� osim na shared-memory sustavima s malim brojem CPU-a

� perfomance gain� ovisi o aplikaciji, ali jako malen

� prednosti� zar ih treba navoditi ☺

� nedostaci� performanse, izvedivost, …

Poglavlje 1 – Uvod u paralelni svijet

Page 55: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (55 od 258)

1.5.4 P1.5.4 P--ThreadsThreads

� POSIX standard threads package

� koristi se u shared-memory modelu� višestruke niti kontrole (thread of control) se izvršavaju u jednom

memorijskom prostoru

� low-level implementacija� funkcije za kreiranje/uništavanje niti i njihovu koordinaciju

� preporuka� ne preporuča se koristiti kao general-purpose tehnologija

paralelnog programiranja� samo za iskusne programere

Poglavlje 1 – Uvod u paralelni svijet

Page 56: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (56 od 258)

1.5.5 OpenMP1.5.5 OpenMP

� alternativni pristup shared-mem programiranja� veća strukturiranost� iskorištavanje paralelizma u petljama

� podrška za Fortran i C/C++� coarse-grained i fine-grained paralelizam� prednosti

� zadržava sekvencijalnu semantiku – direktive se odbacuju• isto tako se sekvencijalna aplikacija lako pretvara u paralelnu!

� jednostavno ostvarenje osrednjeg paralelizma

� nedostaci� nedostatak podrške za korisničko upravljanje razdiobom podataka

• vjerojatno neće biti skalabilne implementacije OpenMP-a

Poglavlje 1 – Uvod u paralelni svijet

Page 57: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (57 od 258)

1.5.6 HPF1.5.6 HPF

� proširenje sekvencijalnog jezika – Fortran 90� s kombinacijama direktiva i funkcija

� data-parallel implicitni paralelni programski model� HPF se razlikuje od OpenMP- a po…

� HPF ima korisničko upravljanje razdiobom podataka� podržava prenosivo, high-perfomance izvršavanje na skalabilnim

sustavima, posebno na distributed-mem sustavima

� prednosti� kompleksni paralelni algoritmi se mogu jednostavno ostvariti, kao

Fortran 90 kôd� jako je dobar za dekompoziciju podataka – machine independent

Poglavlje 1 – Uvod u paralelni svijet

Page 58: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (58 od 258)

1.5.6 HPF1.5.6 HPF

� nedostaci� današnje HPF implementacije su efikasne za odreñeni skup

alogoritama• dense linear algebra

• regular grids

� nije primjenjiv na irregular computation probleme• HPF-2 standard propisuje ekstenzije jezika za ovakve probleme, ali

postoji jako malo prevoditelja koji to i implementiraju

Poglavlje 1 – Uvod u paralelni svijet

Page 59: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (59 od 258)

1.5.7 Co1.5.7 Co--Array FortranArray Fortran

� jezik namijenjen SPMD programskom modelu� više niti izvršava isti program s meñusobnom

komunikacijom� samo jedna nit, u razmjeni podataka, treba specificirati

komunikaciju� to se radi s deklaracijom pristupnih polja s dodatnom “ko-

dimenzijom” (co-dimension) i indeksirajući tu ko-dimenziju s identifikatorom niti

� prednosti� puno potencijala: low-level manipulacije za poboljšavanje

performansi, nije usko povezan s hardverskim modelima

� nedostaci� nema dobru podršku, novi standard,…

Poglavlje 1 – Uvod u paralelni svijet

Page 60: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (60 od 258)

1.5.8 POOMA i HPC++1.5.8 POOMA i HPC++

� alternativan pristup implementaciji implicitnog podatkovnog paralelizma� definiranje biblioteka koje koriste tehnike OOP

� POOMA i HPC++ su biblioteke koje koriste standardne OOP tehnike za definiranje klasa koje enkapsuliraju paralelizam

� prednost� OOP pristup nudi jednostavnost i razumljivost

� nedostatak� kompleksne biblioteke

• debugging and performance problems

Poglavlje 1 – Uvod u paralelni svijet

Page 61: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (61 od 258)

1.5.9 Komponentni modeli / Hibridi1.5.9 Komponentni modeli / Hibridi

� Komponentni modeli� omogućuju modularnu konstrukciju kompleksnih algoritama

• CORBA, .COM, Java Beans� u eksperimentalnoj fazi

• trenutno nedostatak podrške za paralelizaciju• ali u budućnosti…

� Hibridi� često se dokazuju kao efektivna i popularna rješenja

• npr. aplikacije razvijene kao distributed-mem framework (MPI) preko shared-mem paralelizma (OpenMP)

� motivacija• pisati aplikacije čija struktura odgovara strukturi današnjih paralelnih

računala (više umreženih shared-mem računala)� ostale hibridne mogućnosti: MPI&p-threads, CORBA&HPF,…

Poglavlje 1 – Uvod u paralelni svijet

Page 62: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (62 od 258)

1.5.10 Pravila odabira tehnologije1.5.10 Pravila odabira tehnologije

Poglavlje 1 – Uvod u paralelni svijet

ako…koristi…

…skalabilnost nije bitna…aplikacija uključuje fine-grained operacije nad dijeljenim podacima…je aplikacija load imbalanced

…ako OpenMP nije dostupan ili prihvatljiv

Threads

…postoji implementacija…se zahtijeva osrednje ulaganje u programiranje (manje od MPI-a)…je SPMD stil programiranja prihvatljiv

Co-Array Fortran

…je aplikacija regularna (regular) i data parallel

…je jednostavno programiranje u Fortran 90 stilu poželjno…je eksplicitna razdioba podataka nužna za bolje performanse…visoka razina kontrole nad paralelizmom nije toliko važna

HPF

…su potrebni svi MPI zahtjevi plus fault tolerancePVM

…je skalabilnost bitna…se aplikacija mora izvršavati na message-passing platformama…je prenosivost bitna…je zahtjevno programiranje prihvatljivo da bi se ostvarili neki ciljevi (visoke perfomanse,…)

MPI

…je cilj ostvariti osrednji paralelizam [O(10)] iz postojećeg kôda…postoji dobra implementacija za ciljanu platformu…prenosivost na distributed-memory sustave nije glavni zahtjev

OpenMP

…je cilj ostvariti osrednji paralelizam [O(4-10)] iz postojećeg kôda…ciljana platforma im dobar paralelizirajući prevoditelj…prenosivost nije glavni zahtjev

Prevoditelj

Page 63: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (63 od 258)

1.5.10 Pravila odabira tehnologije1.5.10 Pravila odabira tehnologije

Poglavlje 1 – Uvod u paralelni svijet

ako…koristi…

…imate specifičan problem…je biblioteka dostupna na ciljanoj platformi

High-level libs

…aplikacija ima task parallel formulaciju…se želi izvršavati aplikaciju na network-based sustavu…performanse nisu bitne

CORBA, RMI

Page 64: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (64 od 258)

Poglavlje 2Poglavlje 2Metodologija dizajna Metodologija dizajna paralelnih aplikacijaparalelnih aplikacija

Predavač:

Stjepan Buljat

Page 65: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (65 od 258)

2.1 Uvod2.1 Uvod

� Paralelizacija � samo još jedna optimizacijska tehnika za brže dobivanje rezultata� pritom se koristi više od jednog procesora za rješenje problema� protečeno vrijeme (wallclock time) se obično smanji, ali ukupno

CPU vrijeme se povećava!

� Kad ćemo paralelizirati problem?� predugo računanje� prevelik problem (memorijski zahtjevan)� uvoñenje skalabilnosti

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 66: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (66 od 258)

2.1 Uvod2.1 Uvod

� “Nešto” je paralelno ako postoji odreñeni stupanj nezavisnosti u poretku operacija

� to “nešto” može biti:� skup programskih izraza� algoritam� dio programa� problem koji se pokušava riješiti

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

GR

AN

UL

AR

NO

ST

Page 67: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (67 od 258)

2.2 Uzroci paralelnog 2.2 Uzroci paralelnog overheadoverhead--aa

� Vrijeme potrebno za koordinaciju paralelnih poslova� Sinkronizacija

• eksplicitna– globalna

» utječe na sve poslove (velik utjecaj na performanse)– zaštićeni pristup

» korištenje semafora za pristup varijablama u dijeljenoj memoriji

• implicitna– sinkrone komunikacije (p2p, kolektivna)

� komunikacija meñu poslovima (procesima)� inicijalizacija i terminiranje paralelnih poslova� runtime software overhead (prevoditelj, OS, biblioteke)

• baferiranje• prekidi

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 68: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (68 od 258)

2.2 Uzroci paralelnog 2.2 Uzroci paralelnog overheadoverhead--aa

� Parallel overhead

� neminovan dodatak paralelizaciji� nema “besplatne” paralelizacije� vrijedi pravilo da povećanjem broja konkuretnih dijelova

aplikacije raste i paralelni overhead!

� Efikasna paralelizacija se svodi na minimizaciju komunikacijskog overhead- a� zbog dodatne komunikacije ukupno CPU vrijeme u paralelnoj

aplikaciji raste

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 69: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (69 od 258)

2.3 Coarse vs. Fine grained parallelism2.3 Coarse vs. Fine grained parallelism

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

coarse grained fine grained

komunikacija

računanje

vrijeme

� Coarse grained

� paralelizam na višem nivou• teško se ostvaruje dobar load balancing

• maleni komunikacijski zahtjevi• ograničena skalabilnost

� Fine grained

� paralelizam na nižem nivou• lakše je ostvariti dobar load balancing

• veći komunikacijski zahtjevi• neograničena skalabilnost

Page 70: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (70 od 258)

2.3 Coarse vs. Fine grained parallelism2.3 Coarse vs. Fine grained parallelism

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

� Load balancing� Veliki problem za aplikacije koje nisu simetrične

• “nezavisni” dijelovi aplikacije se ne izvršavaju jednakom brzinom

� uzrokuje povećanje ukupnog vremena izvršavanja� problem skalabilnosti� na load balancing se može utjecati promjenom zrnatosti

paralelizacije• viñeno na prethodnom slajdu...

Page 71: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (71 od 258)

2.4 Strategije razvoja paralelnih aplikacija2.4 Strategije razvoja paralelnih aplikacija

� Postoje tri općeprihvaćene strategije razvoja paralelnih aplikacija:� (strategija 1) Korištenje paralelnih biblioteka

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Postojeći izvorni

kôd

Pronañi i zamijeni

procedure

Ponovno linkaj (relink)

Paralelna aplikacija

Razvij paralelnu biblioteku

Page 72: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (72 od 258)

2.4 Strategije razvoja paralelnih aplikacija2.4 Strategije razvoja paralelnih aplikacija

� (strategija 2) Automatska paralelizacija• znatno bi se olakšao posao programera• daleko od stvarnosti• još pod istraživanjem

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Postojeći izvorni

kôd

Sitne modifikacije

izvornog kôda

Automatska paralelizacija

Paralelna aplikacija

Page 73: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (73 od 258)

2.4 Strategije razvoja paralelnih aplikacija2.4 Strategije razvoja paralelnih aplikacija

� (strategija 3) Ponovno pisanje aplikacije• preformulacija algoritma s ciljem paralelizacije• minimizirati sekvencijalnost• iskoristiti sekvencijalni kôd ako je prijeko potreban

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Postojeći izvorni

kôd

Pisanje izvornog kôda

iznova

Paralelizacija uz pomoć

prevoditelja

Paralelna aplikacija

Page 74: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (74 od 258)

2.5 Metodološki dizajn paralelnih algoritama2.5 Metodološki dizajn paralelnih algoritama

� Dekompozicija problema je najveći problem paralelizacije

� “Writing good parallel code is actually more of an art than a science; practitioners must be able to think about algorithms in novel ways.”

• Forrest Hoffman

– Linux Magazine – Extreme Linux: An Introduction to PP

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 75: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (75 od 258)

2.5 Metodološki dizajn paralelnih algoritama2.5 Metodološki dizajn paralelnih algoritama

� Ian Foster @ Argonne National Laboratory� Uvoñenje istraživačkog pristupa dizajnu aplikacija� Metodologija je strukturirana� Postupak je podijeljen na četiri dijela:

� Particioniranje (partitioning)

� Komunikacija (communication)

� Aglomeracija (agglomeration)

� Mapiranje (mapping)

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 76: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (76 od 258)

2.5 Metodološki dizajn paralelnih algoritama2.5 Metodološki dizajn paralelnih algoritama

� Particioniranje� razotkrivanje mogućih paralelnih dijelova algoritma� razdjeljivanje algoritma na manje poslove

• Podatkovna dekompozicija (domain/data decomposition)

• Funkcionalna dekompozicija (functional decomposition)

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Atmosferski model

Oceanskimodel

Hidrološkimodel

Površinski model

Functional decompositionDomain decomposition

nema podjele geometrijska podjelau jednoj dimenziji

geometrijska podjelau dvije dimenzije

Page 77: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (77 od 258)

2.5 Metodološki dizajn paralelnih algoritama2.5 Metodološki dizajn paralelnih algoritama

� Komunikacija � odreñivanje komunikacijskih zahtjeva algoritma� postoje 4 komunikacijska uzorka:

• lokalna/globalna• strukturirana/nestrukturirana• statička/dinamička• sinkrona/asinkrona

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Primjer nestrukturirane komunikacijeFinite Element Mesh – svaki vertex je grid

point, rubovi su komunikacijski putevi

Page 78: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (78 od 258)

Povećavanje veličine task-ova, smanjivanjem dimenzije

geometrijska podjelau jednoj dimenziji

geometrijska podjelau dvije dimenzije

2.5 Metodološki dizajn paralelnih algoritama2.5 Metodološki dizajn paralelnih algoritama

� Aglomeracija� preispitivanje prethodna dva koraka� uvodi praktična ograničenja paralelizacije� postoje tri cilja ovog koraka koja mogu biti konfliktna:

• smanjivanje komunikacijskih troškova povećanjem računske i komunikacijske granularnosti

• zadržavanje fleksibilnosti s obzirom na skalabilnost• smanjivanje troškova softverskog inženjerstva

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Povećavanje veličine task-ova, spajanjem čvorova

Page 79: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (79 od 258)

2.5 Metodološki dizajn paralelnih algoritama2.5 Metodološki dizajn paralelnih algoritama

� Mapiranje� odreñuje mjesto izvršavanja svakog task-a

� NP-complete problem – nema algoritma za efikasno rješenje� cilj = smanjivanje ukupnog vremena izvršavanja� koriste se dvije strategije:

• mapiranje poslova na različite procesore – povećanje konkurentnosti– samo ako se ti poslovi mogu izvoditi konkurentno na različitim CPU

• mapiranje poslova na isti procesor – povećanje lokalnosti– samo ako ti poslovi meñusobno često komuniciraju

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Simulacija supravodljivostiRecursive Bisection

3D strukturaRecursive Graph Bisection

Vremenski modelDynamic, local load balancing

Page 80: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (80 od 258)

2.5 Metodološki dizajn paralelnih algoritama2.5 Metodološki dizajn paralelnih algoritama

� PCAM postupak

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

mapiranje

aglomeracija

komunikacija

particioniranjePROBLEM

Page 81: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (81 od 258)

2.6 Primjer dizajna paralelnog 2.6 Primjer dizajna paralelnog algoritma algoritma –– Atmosferski modelAtmosferski model

� Računalni program koji simulira atmosferske procese (kiša, vjetar, tlak,…) koji utječu na vrijeme ili klimu

� Sve je uvjetovano fizikalnim silama pa se može napraviti matematički model � kompleksno

� Upotreba:� predviñanje sutrašnjeg vremena� utjecaj povišene koncentracije CO2 na klimu, itd.

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 82: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (82 od 258)

2.6 Primjer dizajna paralelnog 2.6 Primjer dizajna paralelnog algoritma algoritma –– Atmosferski modelAtmosferski model

� Osnovna fluidna, dinamička, ponašanja atmosfere se opisuju parcijalno diferencijalnim jednadžbama

� Prostor se aproksimira konačnim skupom točaka; prostor je dimenzija Nx x Ny x NZ

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

NZ NY

NX

Page 83: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (83 od 258)

2.6 Primjer dizajna paralelnog 2.6 Primjer dizajna paralelnog algoritma algoritma –– Atmosferski modelAtmosferski model

� Svaka točka tog prostora sadrži vektor s vrijednostima:� tlak� temperatura� brzina vjetra� vlažnost

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Jednadžbe koje se koriste za predviñanje vremena

Page 84: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (84 od 258)

2.6 Primjer dizajna paralelnog 2.6 Primjer dizajna paralelnog algoritma algoritma –– Atmosferski modelAtmosferski model

� Izvodi se vremenska integracija kako bi se odredilo buduće stanje atmosfere ovisno o početnom stanju

� Koristi se finite-difference metoda promjene vrijednosti točaka grida, gdje je stencil-horizontal 9, a stencil-

vertical 3

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 85: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (85 od 258)

2.6 Primjer dizajna paralelnog 2.6 Primjer dizajna paralelnog algoritma algoritma –– Atmosferski modelAtmosferski model

� PCAM – Particioniranje� Podatkovna dekompozicija po x,y i z – osi

� Svaka točka grida zasebni task (Nx*Ny*Nz task-ova)

� PCAM – Komunikacija� Postoje tri tipa komunikacije:

• finite-difference stencil – svaki task komunicira s 10 susjeda• globalne operacije – periodički se računa ukupna masa atmosfere

• fizikalni proračuni – računanje fizikalnih komponenti svakog task-a

(npr. TotalClearSky), računski najzahtjevnija i najproblematičnija

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

∑ ∑∑−

=

=

=

=1

0

1

0

1

0

,,

X Y ZN

i

N

j

N

k

kjiMUkupnaMasa

Page 86: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (86 od 258)

2.6 Primjer dizajna paralelnog 2.6 Primjer dizajna paralelnog algoritma algoritma –– Atmosferski modelAtmosferski model

� PCAM – Aglomeracija� Prevelik broj task-ova previše opterećuje sustav, radi se

postupak grupiranja task-ova u dva koraka:• Aglomeracija s 1 � 4 točke smanjuje komunikacijske zahtjeve s

8 na 4 poruke u horizontalnoj ravnini• U vertikalnoj ravnini su veći komunikacijski zahtjevi (30ak

poruka) zbog fizikalnih proračuna pa se radi stupčana aglomeracija

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 87: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (87 od 258)

2.6 Primjer dizajna paralelnog 2.6 Primjer dizajna paralelnog algoritma algoritma –– Atmosferski modelAtmosferski model

� PCAM – Mapiranje� Koristi se jednostavna tehnika mapiranja task-ova na procese

jer je proračun modela ravnomjerno rasporeñen meñu task-

ovima

� Istraživanja su pokazala da load imbalance uzrokuje pad efikasnosti aplikacije do 20%

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 88: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (88 od 258)

2.7 Savjeti2.7 Savjeti

� William J. Camp @ Sandia National Laboratories� Director of Computers, Computation and Mathematics

� http://www.cs.sandia.gov

� Aksiomi:� AKSIOM 14

• “first find coarse-grained, then medium-grained, then fine-grained parallelism”

� AKSIOM 15• “done correctly, the gain from these is multiplicative”

� AKSIOM 16• “Life’s balancing act; so’s MPP computing”

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 89: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (89 od 258)

2.7 Savjeti2.7 Savjeti

� AKSIOM 17• “be an introvert; never communicate needlessly”

� AKSIOM 18• “be independent; never synchronize needlessly”

� AKSIOM 19• “parallel computing is a cold world, bundle up well”

� AKSIOM 20• “I/O should only be done under medical supervision”

� AKSIOM 21• “if MPP computin’ is easy, it ain’t cheap”

� AKSIOM 22• “if MPP computin’ is cheap, it ain’t easy”

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 90: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (90 od 258)

2.7 Savjeti2.7 Savjeti

� AKSIOM 23• “the difficulty of programming an MPP effectively is directly

proportional to latency”

� AKSIOM 24• “the parallelism is in the problem, not in the code”

� AKSIOM 25• “there are an infinite number of parallel algorithms”

� AKSIOM 26• “there are no parallel algorithms (Simon’s theorem); it’s almost true”

� AKSIOM 27• “the best parallel algorithm is almost always a parallel

implementation of the best serial algorithm”

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 91: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (91 od 258)

2.7 Savjeti2.7 Savjeti

� AKSIOM 28• “Amdahl’s Law DOES limit vector speedup”

� AKSIOM 18’• “work in teams (sometimes SIMD constructs are just what the

doctor ordered)!”

� Savjeti� SAVJET 1

• Any amount of serialism is death, so…– make the problem large

– look everywhere for serialism and purge it from your code

– never, ever, ever add serial statements

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 92: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (92 od 258)

2.7 Savjeti2.7 Savjeti

� SAVJET 2• Keep communications in the noise! So…

– don’t do little problems on big computers– change algorithms when profitable

– bundle up! Avoid small messages on high latency interconnects

– don’t waste memory; using all the memory on a node minimizes theratio of communications to useful work

� SAVJET 3• The parallelism is in the problem! So…

– look first at the problem

– look second at algorithms

– look at data structures in the code– don’t waste cycles on line-by-line parallelism

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 93: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (93 od 258)

2.7 Savjeti2.7 Savjeti

� SAVJET 4• Look at the problem, identify the kinds of parallelism it contains…

– multi-program– multi-task

– data parallelism

– inner-loop parallelism (e.g. vectors)

� SAVJET 7• Synchronization is expensive. So…

– don’t do it unless you have to– never, ever put in synchronization just to get rid of a bug else you’ll be

stuck with it for the life of the code!

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Time into effort

Page 94: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (94 od 258)

2.8 Analiza performansi2.8 Analiza performansi

� Postoji nekoliko mogućih metoda analize performansi paralelnih aplikacija:� a priori analiza� ubrzanje� efikasnost� Amdahl-ov zakon� rad i dodatno opterećenje� skalabilnost

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 95: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (95 od 258)

2.8.1 2.8.1 A priori A priori analizaanaliza

� procjena vremena izvoñenja aplikacije� neovisno o računalu� neovisno o programskom jeziku� neovisno o prevoditelju (compiler)

� za procjenu se koristi O- notacija� O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < … < O(2n)

� ili T- notacija� T(n) = 1, T(n) = n2, …

� T(n) � T(n,p)� n – ulazna veličina� p – broj procesa

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 96: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (96 od 258)

2.8.1 2.8.1 A priori A priori analizaanaliza

� procjena izvoñenja zajedno s I/O operacijama� T(n,p) = Tcalc(n,p) + Ti/o(n,p)

� procjena izvoñenja zajedno s komunikacijom� T(n,p) = Tcalc(n,p) + Ti/o(n,p) + Tcomm(n,p)

� komunikacijske operacije se opisuju s dva parametra:� ts – vrijeme postavljanja poruke na komunikacijski kanal� tc – vrijeme prijenosa jedne jedinice podataka preko kanala

� tcomm = ts + k*tc

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

ts

vrije

me

broj jedinica podataka (k)

Page 97: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (97 od 258)

2.8.2 Ubrzanje2.8.2 Ubrzanje

� omjer vremena izvoñenja serijske aplikacije (runtime) i vremena izvoñenja paralelne aplikacije �

� linearno ubrzanje� ubrzanje je jednako broju procesa � S(n,p) = p

� usporenje (slowdown)

� ako se paralelna aplikacija izvodi puno sporije od serijske

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

),(

)(),(

pnT

nTpnS

π

σ=

Page 98: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (98 od 258)

2.8.3 Efikasnost2.8.3 Efikasnost

� Mjera iskorištenosti (utilization) procesa u paralelnoj aplikaciji

� Definira se kao �

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

p

pnSpnE

),(),( =

Page 99: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (99 od 258)

2.8.4 Amdahl2.8.4 Amdahl--ov zakonov zakon

� Pretpostavke:� odreñenoj aplikaciji treba Tσ vremena da se izvede koristeći

jedan proces� aplikacija sadrži odreñeni postotak kôda koji se može savršeno

paralelizirati, označava se s r, 0 ≤ r ≤ 1• ovaj dio kôda ima linearno ubrzanje i izvodi se r*Tσ/p vremena

� ostatak kôda, 1 – r, je inherentno serijski• vrijeme izvoñenja je (1 – r)Tσ

� zakon kaže da ubrzanje paralelizirane aplikacije s p procesa iznosi �

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

P

rr

p

TrTr

TpS

+−

=⋅

+⋅−

=

1

1

)1(

)(σ

σ

σ

Page 100: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (100 od 258)

2.8.4 Amdahl2.8.4 Amdahl--ov zakonov zakon

� dS/dp ≥ 0 � funkcija je rastuća po varijabli p� ako p ���� ∞ onda vrijedi �

� postoji gornje ograničenje ubrzanja koje direktno ovisi o dijelu aplikacije koji se može savršeno paralelizirati

� slabe točke zakona� ne uzima se u obzir veličina problema� što je s komunikacijskim overhead-om?� problem nije skalabilan pri većem broju procesora

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

rpS

−→

1

1)(

Page 101: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (101 od 258)

2.8.4 Amdahl2.8.4 Amdahl--ov zakonov zakon

� Ovisnost ubrzanja o količini paralelnog kôda

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

1

3

5

7

9

11

13

15

17

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Broj procesora

Ub

rzan

je

r = 1.0 r = 0.99 r = 0.9 r = 0.8 r = 0.7 r = 0.5 r = 0.2

Page 102: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (102 od 258)

2.8.4 Amdahl2.8.4 Amdahl--ov zakonov zakon

� Ovisnost ubrzanja o broju procesora

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

1

2

3

4

5

6

7

8

9

10

11

r

Ub

rzan

je

P = 1 P = 10 P = 100 P = 1000 P = 10000

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

Page 103: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (103 od 258)

2.8.5 Rad i dodatno opterećenje2.8.5 Rad i dodatno opterećenje

� Dva načina kojima se inherentno serijski dio aplikacije može paralelizirati:� jedan proces izvodi naredbe tog segmenta, dok drugi čekaju (idle)

� svi procesi izvode iste naredbe tog segmenta

� Količina rada serijske aplikacije je vrijeme izvoñenja te aplikacije � Wσ(n) = Tσ(n)

� Količina rada paralelne aplikacije je zbroj količina rada svih procesa �

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

∑−

=

=1

0

),(),(p

q

q pnWpnWπ

Page 104: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (104 od 258)

2.8.5 Rad i dodatno opterećenje2.8.5 Rad i dodatno opterećenje

� …odakle vrijedi � Wπ(n,p) = pTπ(n,p)� Redefiniranje definicije efikasnosti ����

� Overhead je količina rada koju paralelna aplikacija izvodi, a serijska ne izvodi �

To(n,p) = Wπ(n,p) - Wσ(n) = pTπ(n,p) - Tσ(n)

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

),(

)(

),(

)(),(

pnW

nW

pnTp

nTpnE

π

σ

π

σ =⋅

=

Page 105: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (105 od 258)

2.8.5 Rad i dodatno opterećenje2.8.5 Rad i dodatno opterećenje

� Tri glavna uzroka overhead- a:� komunikacija� idle vrijeme� dodatno računanje

� paralelizacija � parallel overhead

� nema besplatne paralelizacije!

� efikasno paraleliziranje?� svodi se na minimizaciju komunikacijskih zahtjeva!

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

Page 106: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (106 od 258)

2.8.5 Rad i dodatno opterećenje2.8.5 Rad i dodatno opterećenje

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

wal

lclo

ck t

ime

serijsko izvršavanje paralelno izvršavanje>>bez komunikacije

paralelno izvršavanje>>s komunikacijom

-idealna paralelizacija

-wallclock time je 4puta manji od vremenaizvršavanja serijskeaplikacije

-dodatna komunikacija

-nije 4x puta brži

-ukupno CPU vrijemese povećava!

Page 107: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (107 od 258)

2.8.6 Skalabilnost2.8.6 Skalabilnost

� Paralelna aplikacija je skalabilna ako; kako se broj procesa (p) povećava, možemo pronaći ratu povećavanja veličine problema (n) tako da efikasnost ostaje konstantna

� Funkciju efikasnosti promatramo u okvirima overhead- a, tako da ona u ovisnosti o (n) i (p) iznosi �

� Kako riješiti?

Poglavlje 2 – Metodologija dizajna paralelnih aplikacija

1)(

),(

1

)(),(

)(

),(

)(),(

+

=+

=⋅

=

nT

pnTnTpnT

nT

pnTp

nTpnE

OO

σ

σ

σ

π

σ

Page 108: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (108 od 258)

…… kraj prvog dana …kraj prvog dana …

Page 109: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (109 od 258)

MPI Workshop @ SRCEMPI Workshop @ SRCE

radionica no.1Uvod u Message Passing Interface

Sveučilišni računski centar, Zagreb28. lipnja – 30. lipnja, 2005.

Page 110: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (110 od 258)

Poglavlje 3Poglavlje 3Uvod u MPI Uvod u MPI –– Message Passing Interface Message Passing Interface ––

Predavač:

Stjepan Buljat

Page 111: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (111 od 258)

3.1 Što je to MPI?3.1 Što je to MPI?

� de facto standard za programiranje paralelnih računala s distribuiranom memorijom� biblioteka funkcija koje omogućuju message passing model� specifikacija, a ne implementacija

� MPI ostvaruje sljedeća svojstva modela PP-a:� efikasnost� prenosivost� funkcionalnost� heterogenost

� MPI standard sadrži oko 125 različitih funkcija� Sa samo 6 MPI funkcija može se napraviti paralelna aplikacija

� Pruža podršku za C, C++ i Fortran� u ovoj radionici se koriste samo biblioteke za jezik C

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 112: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (112 od 258)

3.1 Što je to MPI?3.1 Što je to MPI?

� Zašto koristiti MPI?� performance-oriented standard� prenosivost� skalabilnost� eksplicitni paralelizam

• programer se bavi paralelizacijom tokom razvoja aplikacije

� Poteškoće s MPI programiranjem� potrebno vrijeme pretvorbe serijskog kôda u paralelni� kompliciranije od serijskog programiranja� gubici pri sinkronizaciji

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 113: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (113 od 258)

3.2 Povijest MPI3.2 Povijest MPI--aa

� 1993.� skupina znanstvenika, programera i kompanija (IBM, Cray, Intel,

Convex,..) započinju rad na standardu MPI-a� Danas ta skupina djeluje pod imenom MPI Forum

• www.mpi-forum.org

� 1994., svibanj� izlazi prva verzija standarda – MPI 1.0� osnovne komunikacije� podrška za Fortran 77 i C

� 1995., lipanj� verzija – MPI 1.1� ispravke prethodnog standarda

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 114: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (114 od 258)

3.2 Povijest MPI3.2 Povijest MPI--aa

� 1997.� izlazi najnovija verzija – MPI 2.0� podrška za Fortran 90 i C++� nadograñeni MPI 1.2 standard� proširuje standard s dodatnih 30-ak funkcija� sačuvan forward compatibility

� Postoje brojne implementacije MPI standarda od kojih su najpoznatije: MPICH, LAM, CHIMP,…

� Prije MPI su postojale brojne biblioteke za različite tipove računala…danas izumrlo ☺� CMMD (Thinking Machines CM5)� NX (Intel Paragon,…)

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 115: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (115 od 258)

3.3 Osnove MPI komunikacija3.3 Osnove MPI komunikacija

� MPI model se temelji na dvije primitive:� primitiva slanja poruka – MPI_Send()

� primitiva primanja poruka – MPI_Recv()

� Koji argumenti su dovoljni za uspješnu komunikaciju?� Opis spremnika poruke

• address• count

• datatype

� Odvajanje poruka• tag (context)

� Imenovanje procesa• rank (odredišni/izvorišni proces)

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 116: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (116 od 258)

3.3 Osnove MPI komunikacija3.3 Osnove MPI komunikacija

� Komunikator• comm

� Nakon razmatranja dobivene su sljedeće funkcije� MPI_Send(address, count, datatype, dest, tag, comm)� MPI_Recv(address, count, datatype, src, tag, comm, status)

• status – dodatni argument za spremanje informacija o komunikaciji

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 117: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (117 od 258)

3.4 Svojstva MPI3.4 Svojstva MPI--aa

� MPI-1 standard uključuje sljedeća svojstva:� point-2-point komunikacija� kolektivne operacije� grupe procesa� komunikatori� virtualne topologije� upravljanje okolinom� debagiranje i profiliranje� podrška za C i Fortran� komunikacijski modovi� podrška za biblioteke� podrška za heterogene mreže

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 118: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (118 od 258)

3.4 Svojstva MPI3.4 Svojstva MPI--aa

� procesi i procesori

� Svojstva koja su nedorañena u MPI-1 standardu, a uključena su u MPI-2 standard:� dinamičko upravljanje procesima� paralelni I/O� jednostrane operacije� podrška za C++

� Većina implementacija ugrañuje svojstva MPI standarda kako im odgovara, ne rade cjelokupne implementacije standarda

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 119: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (119 od 258)

3.5 3.5 PrevoPrevoññenje i pokretanje MPI aplikacijaenje i pokretanje MPI aplikacija

� Koristiti će se MPICH 1.2.6 implementacija MPI-a� Intel prevoditelj� http://www-unix.mcs.anl.gov/mpi/mpich/� MPI-1 verzija standarda� Argonne National Laboratory

• http://www.anl.gov/

� Sustav za upravljanje poslovima (JMS)� Sun Grid Engine – SGE

• http://gridengine.sunsource.net/

• U radnom direktoriju se nalazi primjer SGE skripte za pokretanjeposlova

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 120: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (120 od 258)

3.5 3.5 PrevoPrevoññenje i pokretanje MPI aplikacijaenje i pokretanje MPI aplikacija

� Predložak SGE skripte� #$ -N <ime-aplikacije>

� #$ -o <ime-output-datoteke>

� #$ -e <ime-error-datoteke>

� #$ -pe mpi <broj-procesa>

� #$ -v P4_GLOBMEMSIZE = <kolicina-shmem>

� #$ -cwd

� mpirun –np $NSLOTS –machinefile $TMPDIR/machines ./<ime-aplikacije>

� Pokretanje poslova� $ qsub <ime-sge-skripte>

� Provjeravanje statusa čvorova� $ qstat -f

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 121: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (121 od 258)

3.5 3.5 PrevoPrevoññenje i pokretanje MPI aplikacijaenje i pokretanje MPI aplikacija

� Prevoñenje i povezivanje – C verzija� $ mpicc <source-file> -o <binary-output-file>

� Pokretanje aplikacije – C verzija� $ mpirun –np <# of processes> -machinefile

<listofhosts> ./<app-name>

Poglavlje 3 – Uvod u MPI – Message Passing Interface

Page 122: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (122 od 258)

Poglavlje 4Poglavlje 4Prvi koraciPrvi koraci–– programiranje u MPIprogramiranje u MPI--u u ––

Predavač:

Stjepan Buljat

Page 123: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (123 od 258)

4.1 Uvod 4.1 Uvod

� Osnovni preduvjet� treba uključiti MPI header (biblioteku) u korisnički kôd� biblioteka sadrži definicije konstanti i prototipova

� Predložak MPI funkcija – C verzija� error = MPI_Xxxxx(argument, …);� svaka funkcija vraća kôd pogreške (error)� ime svake funkcije započinje s MPI_ , a nastavlja se sa

znakovnim nizom čije je prvo slovo veliko, a ostala su mala� sve konstante se pišu velikim slovima

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

#include “mpi.h” // za C

#include “mpif.h” // za Fortran

Page 124: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (124 od 258)

4.1 Uvod4.1 Uvod

� Predložak MPI funkcija – Fortran verzija� MPI_XXXXX(argument, …);� ime svake funkcije započinje s MPI_ , a nastavlja se sa

znakovnim nizom čija su sva slova velika• Fortran je case-insensitive pa se ne treba pridržavati navedenog

pravila

� svaka funkcija vraća kôd pogreške preko posljednjeg argumenta• MPI_SUCCES se vraća kad je funkcija uspješno obavljena• svaka funkcija posjeduje skup kôdova koje može vratiti

� svi ostali argumenti su jednaki onima u C verziji MPI funkcija� svi argumenti su tipa INTEGER

• status varijabla je polje INTEGER-a, veličine MPI_STATUS_SIZE

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

Page 125: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (125 od 258)

4.2 Inicijalizacija MPI4.2 Inicijalizacija MPI

� Inicijalizacija MPI komunikacijskih mehanizama� funkcija MPI_Init() se poziva prije svih MPI funkcija kako bi se

inicijaliziralo MPI okruženje (enviroment)

� C verzija

– argc, argv � argumenti koje prima main() funkcija

– ne preporuča ih se koristiti zbog prenosivosti aplikacije

� Fortran verzija

– INTEGER IERROR

– ne prima nikakve argumente osim kôda za pogrešku

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

int MPI_Init(int *argc, char ***argv);

MPI_INIT( IERROR )

Page 126: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (126 od 258)

4.3 Terminiranje MPI4.3 Terminiranje MPI

� Terminiranje MPI komunikacijskih mehanizama� nakon svih MPI funkcija poziva se funkcija MPI_Finalize() koja

briše sve postavljene parametre� C verzija

� Fortran verzija

– INTEGER IERROR

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

int MPI_Finalize(void);

MPI_FINALIZE( IERROR)

Page 127: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (127 od 258)

4.3 Terminiranje MPI4.3 Terminiranje MPI

� Postoji i alternativna funkcija za terminiranje koja se koristi kad se “uhvati” pogreška koju se ne može popraviti

• obrada grešaka će se raditi u sljedećoj MPI radionici (no.2)• C verzija

– IN comm komunikator– IN errorcode kôd pogreške koji vraćamo

• Fortran verzija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

int MPI_Abort(MPI_Comm comm, int errorcode);

MPI_ABORT(COMM, ERRORCODE, IERROR)

Page 128: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (128 od 258)

4.3.1 “Hello World” aplikacija4.3.1 “Hello World” aplikacija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

#include <stdio.h>#include <mpi.h>

int main(int argc, char **argv) {

MPI_Init(&argc, &argv); /* inicijalizacija MPI-a */

printf(“Hello World!\n”);

MPI_Finalize();return 0;

}

1/1

Page 129: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (129 od 258)

4.3.1.1 “Hello World” 4.3.1.1 “Hello World” –– output output

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

sbuljat@cgi-sge sbuljat]$ ssh compute-0-5

Rocks Compute Node

[sbuljat@compute-0-5 sbuljat]$ cd workshop/no.1/example.1

[sbuljat@compute-0-5 example.1]$ mpicc helloWorld.c -o helloWorld

[sbuljat@compute-0-5 example.1]$ mpiexec -n 4 ./helloWorld

Hello World!

Hello World!

Hello World!

Hello World!

[sbuljat@compute-0-5 example.1]$ mpiexec -n 8 ./helloWorld

Hello World!

Hello World!

Hello World!

Hello World!

Hello World!

Hello World!

Hello World!

Hello World!

[sbuljat@compute-0-5 example.1]$

1/1

Page 130: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (130 od 258)

4.4 Komunikatori, procesi, … 4.4 Komunikatori, procesi, …

� Komunikator� lokalni objekt koji predstavlja komunikacijsku domenu� komunikacijska domena je globalna, distribuirana struktura koja

omogućuje procesima u grupi da meñusobno komuniciraju� intrakomunikator

• meñu-procesna komunikacija unutar iste grupe procesa

� interkomunikator• meñu-procesna komunikacija iz različitih grupa procesa

� komunikator sadrži poredanu listu procesa• ta lista je konstanta (osim u MPI 2.0 standardu)

� svi procesi formiraju komunikator MPI_COMM_WORLD� korisnici mogu kreirati vlastite komunikatore

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

Page 131: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (131 od 258)

4.4 Komunikatori, procesi, …4.4 Komunikatori, procesi, …

� Rank� identifikator procesa unutar komunikatora� procesi unutar komunikatora su slijedno poredani

• počevši od 0 pa do p – 1; gdje je p ukupan broj procesa

� svrha rank-a je adresiranje procesa• slanje i primanje poruka

� jedan proces može istovremeno pripadati većem broju komunikatora

• unutar svakog komunikatora ima svoj rank

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

Page 132: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (132 od 258)

4.4 Komunikatori, procesi, …4.4 Komunikatori, procesi, …

� Shematski prikaz procesa unutar komunikatora

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

6/0

1

2

4

5/1

3

8/2

7/30

MPI_COMM_WORLD

NEW_COMM

Page 133: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (133 od 258)

4.4 Komunikatori, procesi, …4.4 Komunikatori, procesi, …

� Ukupan broj procesa� C verzija

– IN comm ���� komunikator

– OUT size ���� broj procesa u grupi komunikatora comm

� Fortran verzija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

int MPI_Comm_size(MPI_Comm comm, int *size);

MPI_COMM_SIZE(COMM, SIZE, IERROR)

Page 134: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (134 od 258)

4.4 Komunikatori, procesi, …4.4 Komunikatori, procesi, …

� Rank pojedinog procesa� proces unutar komunikatora ima svoj rank, on se odreñuje preko:� C verzija

– IN comm ���� komunikator

– OUT rank ���� rank pozivajućeg procesa

� Fortran verzija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

int MPI_Comm_rank(MPI_Comm comm, int *rank);

MPI_COMM_RANK(COMM, RANK, IERROR)

Page 135: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (135 od 258)

4.4 Komunikatori, procesi, …4.4 Komunikatori, procesi, …

� Ime čvora� postoji mogućnost odreñivanja imena (hostname) čvora na kojem

se proces izvodi, to se radi preko funkcije:� C verzija

– OUT name ���� naziv čvora na kojem se proces izvodi

– OUT resultlen ���� veličina znakovnog polja name

� Fortran verzija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

int MPI_Get_processor_name(char *name, int *resultlen);

MPI_GET_PROCESSOR_NAME(NAME, RESULTLEN, IERROR)

Page 136: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (136 od 258)

4.5 “[extended] Hello World” aplikacija4.5 “[extended] Hello World” aplikacija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

#include <stdio.h>#include <mpi.h>

int main(int argc, char **argv) {int myrank; /* rank procesa */int poolsize; /* ukupan broj procesa */int length; /* duljina zn. niza procName */char procName[BUFSIZ]; /* ime čvora */

MPI_Init(&argc, &argv); /* inicijalizacija MPI-a */

MPI_Comm_size(MPI_COMM_WORLD, &poolsize);MPI_Comm_rank(MPI_COMM_WORLD, &myrank);MPI_Get_processor_name(procName, &length);printf(“Hello from processor %s\n”, procName);printf(“My rank is %d, pool size is %d\n”, myrank, poolsize);

MPI_Finalize();return 0;

}

1/1

Page 137: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (137 od 258)

4.5.1 “[extended] Hello World” 4.5.1 “[extended] Hello World” –– output output

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

[sbuljat@cgi-sge sbuljat]$ ssh c0-5

Rocks Compute Node

[sbuljat@compute-0-5 sbuljat]$ cd workshop/no.1/example.2

[sbuljat@compute-0-5 example.2]$ mpiicc simpleMPI.c -o simpleMPI

[sbuljat@compute-0-5 example.2]$ mpiexec -n 2 ./simpleMPI

Hello from processor compute-0-5.local

My rank is 0, pool size is 2

Hello from processor compute-0-5.local

My rank is 1, pool size is 2

[sbuljat@compute-0-5 example.2]$ mpiexec -n 4 ./simpleMPI

Hello from processor compute-0-5.local

My rank is 0, pool size is 4

Hello from processor compute-0-5.local

My rank is 1, pool size is 4

Hello from processor compute-0-5.local

My rank is 2, pool size is 4

Hello from processor compute-0-5.local

My rank is 3, pool size is 4

[sbuljat@compute-0-5 example.2]$

1/1

Page 138: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (138 od 258)

4.6 G6 4.6 G6 –– najosnovniji skup MPI funkcijanajosnovniji skup MPI funkcija

� Većina paralelnih algoritama se može isprogramirati koristeći 6 osnovnih MPI funkcija:� MPI_Init()� MPI_Comm_size()� MPI_Comm_rank()� MPI_Send()� MPI_Recv()� MPI_Finalize()

� Uz prethodno definirane funkcije koriste se još prijeko potrebne funkcije za slanje i primanje poruka…nastavak…

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

Page 139: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (139 od 258)

4.6 G6 4.6 G6 –– najosnovniji skup MPI funkcijanajosnovniji skup MPI funkcija

� C verzija

– IN buf početna adresa buffer-a– IN count broj elemenata u buffer-u– IN datatype tip podataka koji se šalje– IN dest/src rank odredišta/izvorišta poruke– IN tag tag poruke– IN comm komunikator– OUT status status poruke

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

int MPI_Send(void *buf, int count, MPI_Datatype datatype,int dest, int tag, MPI_Comm comm);

int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int src,int tag, MPI_Comm comm, MPI_Status *status);

Page 140: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (140 od 258)

4.6 G6 4.6 G6 –– najosnovniji skup MPI funkcijanajosnovniji skup MPI funkcija

� Fortran verzija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

MPI_SEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, IERROR)

MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)

Page 141: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (141 od 258)

4.6.1 “G6” aplikacija4.6.1 “G6” aplikacija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

#include <stdio.h>#include "mpi.h"

#define MASTER_RANK 0#define TRUE 1#define FALSE 0

int main(int argc, char **argv) {int myrank, poolsize, length, i, recv_rank;int i_am_the_master = FALSE;MPI_Status status;

MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &poolsize);MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

if(myrank == MASTER_RANK)i_am_the_master = TRUE;

1/2

Page 142: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (142 od 258)

4.6.1 “G6” aplikacija4.6.1 “G6” aplikacija

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

if(i_am_the_master == TRUE) {for(i=1; i<poolsize; i++) {

MPI_Recv(&recv_rank, sizeof(recv_rank), MPI_INT, i, 0, MPI_COMM_WORLD, &status);

printf("Received rank %d from process with rank %d\n", recv_rank, i);

}}else {

MPI_Send(&myrank, sizeof(myrank), MPI_INT, MASTER_RANK, 0, MPI_COMM_WORLD);

}MPI_Finalize();return 0;

}

2/2

Page 143: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (143 od 258)

4.6.1.1 “G6” 4.6.1.1 “G6” –– output output

Poglavlje 4 – Prvi koraci – programiranje u MPI-u

[sbuljat@cgi-sge sbuljat]$ ssh c0-5

Rocks Compute Node

[sbuljat@compute-0-5 sbuljat]$ cd workshop/no.1/example.3

[sbuljat@compute-0-5 example.3]$ mpiicc G6.c -o G6

[sbuljat@compute-0-5 example.3]$ mpiexec -n 2 ./G6

Received rank 1 from process with rank 1

[sbuljat@compute-0-5 example.3]$ mpiexec -n 8 ./G6

Received rank 1 from process with rank 1

Received rank 2 from process with rank 2

Received rank 3 from process with rank 3

Received rank 4 from process with rank 4

Received rank 5 from process with rank 5

Received rank 6 from process with rank 6

Received rank 7 from process with rank 7

[sbuljat@compute-0-5 example.3]$

1/1

Page 144: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (144 od 258)

Poglavlje 5Poglavlje 5PointPoint--toto--point point komunikacijakomunikacija

Predavač:

Stjepan Buljat

Page 145: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (145 od 258)

5.1 Osnovni MPI tipovi podataka5.1 Osnovni MPI tipovi podataka

� C verzija� skup predefiniranih tipova podataka� tipovi podataka koje možemo pronaći u C-u, osim posljednja dva

Poglavlje 5 – Point-to-point komunikacija

nema ga u C-uMPI_PACKED

nema ga u C-uMPI_BYTE

long doubleMPI_LONG_DOUBLE

doubleMPI_DOUBLE

floatMPI_FLOAT

unsigned long intMPI_UNSIGNED_LONG

unsigned intMPI_UNSIGNED

unsigned short intMPI_UNSIGNED_SHORT

unsigned charMPI_UNSIGNED_CHAR

signed long intMPI_LONG

signed intMPI_INT

signed short intMPI_SHORT

signed charMPI_CHAR

C ekvivalentMPI tip podataka

Page 146: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (146 od 258)

5.1 Osnovni MPI tipovi podataka5.1 Osnovni MPI tipovi podataka

� Fortran verzija� tipovi podataka koje možemo pronaći u Fortran-u, osim posljednja dva

Poglavlje 5 – Point-to-point komunikacija

nema ga u Fortran-uMPI_PACKED

nema ga u Fortran-uMPI_BYTE

CHARACTER(1)MPI_CHARACTER

LOGICALMPI_LOGICAL

COMPLEXMPI_COMPLEX

DOUBLE PRECISIONMPI_DOUBLE_PRECISION

REALMPI_REAL

INTEGERMPI_INTEGER

Fortran ekvivalentMPI tip podataka

Page 147: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (147 od 258)

5.2 Uvod u 5.2 Uvod u p2p p2p komunikacijukomunikaciju

� Komunikacija izmeñu samo dva procesa� Jedan šalje poruku, drugi prima poruku� Drugi oblici komunikacije : one-sided, collective

Poglavlje 5 – Point-to-point komunikacija

1

2

4

3komunikator

odredište

6

0

izvorište 5

PROCES 1 PROCES 2

send(podaci) receive(podaci)

podaci

kooperativni prijenos podataka

Page 148: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (148 od 258)

5.2 Uvod u 5.2 Uvod u p2p p2p komunikacijukomunikaciju

� Osnovna svojstva:� očuvanje poretka poruka

• poredak poslanih poruka mora odgovarati poretku primljenih poruka

� nastavak rada• ako jedan proces šalje, a drugi prima poruku onda će jedan od ta

dva procesa sigurno obaviti svoju MPI operaciju• postoje dva scenarija

– odgovarajuću send operaciju će presresti neki treći proces s receive

operacijom» izvorišni proces obavlja svoju operaciju

– neki treći proces će pozvati send operaciju, a odredišni proces će presresti tu operaciju sa svojom receive operacijom

» odredišni proces obavlja svoju operaciju

Poglavlje 5 – Point-to-point komunikacija

Page 149: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (149 od 258)

5.2 Uvod u 5.2 Uvod u p2p p2p komunikacijukomunikaciju

� Četiri načina slanja poruka� implementatorima nije strogo nametnuto koji način moraju

koristiti za pojedinu MPI funkciju

Poglavlje 5 – Point-to-point komunikacija

Završava kad se poruka primiReceive

Uvijek završava (osim ako ne doñe do neke greške), bez obzira da li je operacija primanja poruke završila

Ready send

Synchronous ili buffered modStandard send

Uvijek završava (osim ako ne doñe do neke greške), bez obzira da li je operacija primanja poruke završila

Buffered send

Završava samo onda kad završi i odgovarajuća operacija primanja porukeSynchronous send

UvjetKomunikacijski mod

Page 150: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (150 od 258)

5.2 Uvod u 5.2 Uvod u p2p p2p komunikacijukomunikaciju

� Postoje dva oblika komunikacijskih operacija� blokirajući

• povratak iz poziva takve operacije podrazumijeva završetak te operacije

� neblokirajući• povratak iz poziva ovakve operacije je trenutan• stanje operacije se provjerava posebnim MPI funkcijama

� Blokirajući oblici razl. komunikacijskih modova� standard – MPI_Send()� synchronous – MPI_Ssend()� buffered – MPI_Bsend()� ready – MPI_Rsend()

Poglavlje 5 – Point-to-point komunikacija

Page 151: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (151 od 258)

5.3 Komunikacijski mod 5.3 Komunikacijski mod –– standard sendstandard send

� Op. slanja poruke završava kad se poruka pošalje� može, ali ne mora značiti da je poruka stigla na odredište

� Pravila korištenja standard send operacije� ne smije se pretpostaviti da će se op. slanja obaviti prije nego

operacija primanja poruke započne• npr. blokirajući standard send se ne bi smio koristiti za izmjenu

poruka izmeñu dva procesa � deadlock

� ne smije se pretpostaviti da će se op. slanja završiti nakon štooperacija primanja započne

• ovaj mod može biti implementiran kao buffered ili synchronous

� procesi moraju biti eager readers

• svojstvo primanja svih poruka koje su njima poslane

Poglavlje 5 – Point-to-point komunikacija

Page 152: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (152 od 258)

5.3 Komunikacijski mod 5.3 Komunikacijski mod –– standard sendstandard send

� Prototip standard send funkcije – C verzija

� Prototip standard send funkcije – Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

int MPI_Send(void *buf, int count, MPI_Datatype datatype,int dest, int tag, MPI_Comm comm);

MPI_SEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, IERROR)

Page 153: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (153 od 258)

5.4 Kom. mod 5.4 Kom. mod –– synchronous sendsynchronous send

� Sinkronizirano slanje i primanje poruka� Odredišni proces šalje potvrdu primitka poruke

izvorišnom procesu (handshake procedura)

� Sporiji mehanizam od standard send� Osigurana dostava poruke

� onemogućuje preopterećenje mreže

� Neblokirajuća vs. Blokirajuća� potpuni zastoj se može izbjeći korištenjem neblokirajuće op.

Poglavlje 5 – Point-to-point komunikacija

Page 154: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (154 od 258)

5.4 Kom. mod 5.4 Kom. mod –– synchronous sendsynchronous send

� Prototip synchronous send operacije – C verzija

� Prototip synchronous send operacije – Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

int MPI_Ssend(void *buf, int count, MPI_Datatype datatype,int dest, int tag, MPI_Comm comm);

MPI_SSEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, IERROR)

Page 155: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (155 od 258)

5.5 Komunikacijski mod 5.5 Komunikacijski mod –– buffered sendbuffered send

� Koristi se buffer za spremanje poruka� Asinkroni mod

� poruka izvorišnog procesa se kopira u neki memorijski segment, a odredišni proces odatle kopira poruku u svoju memoriju

� Neblokirajuća vs. Blokirajuća� neblokirajuća operacija nema prednosti nad blokirajućom

� Mana � programer mora eksplicitno alocirati memoriju za buffer

Poglavlje 5 – Point-to-point komunikacija

Page 156: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (156 od 258)

5.5 Komunikacijski mod 5.5 Komunikacijski mod –– buffered sendbuffered send

� Zauzimanje prostora za buffer

� C verzija

– IN buffer početna adresa buffer-a u memoriji

– IN size veličina buffer-a, u byte-ima

� Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

int MPI_Buffer_attach(void *buffer, int size);

MPI_BUFFER_ATTACH(BUFFER, SIZE, IERROR)

Page 157: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (157 od 258)

5.5 Komunikacijski mod 5.5 Komunikacijski mod –– buffered sendbuffered send

� Otpuštanje prostora za buffer

� C verzija

– OUT buffer početna adresa buffer-a u memoriji

– OUT size veličina buffer-a, u byte-ima

� Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

int MPI_Buffer_detach(void *buffer, int size);

MPI_BUFFER_DETACH(BUFFER, SIZE, IERROR)

Page 158: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (158 od 258)

5.5 Komunikacijski mod 5.5 Komunikacijski mod –– buffered sendbuffered send

� Što se dogodi kad se pozove detach buffer-a?� ako se izvode komunikacije koje koriste taj buffer onda će se

one svejedno izvesti do kraja

� Prototip buffered send operacije – C verzija

� Prototip buffered send operacije – Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

int MPI_Bsend(void *buf, int count, MPI_Datatype datatype,int dest, int tag, MPI_Comm comm);

MPI_BSEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, IERROR)

Page 159: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (159 od 258)

5.6 Komunikacijski mod 5.6 Komunikacijski mod –– ready sendready send

� Izvorišni proces šalje poruku nadajući se da je odredišni proces u ready (pripravnom) stanju

� Zahtjev� pripadajuća receive operacija mora biti pozvana prije send

operacije

� Što ako se ne ispoštuje zahtjev?� onda je uspješnost komunikacije upitna

� Svrha?� poboljšanje performansi izbacivanjem buffer-a i handshake

procedure

� Neblokirajuća vs. Blokirajuća� neblokirajući oblik nema prednosti nad blokirajućim oblikom

operacije

Poglavlje 5 – Point-to-point komunikacija

Page 160: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (160 od 258)

5.6 Komunikacijski mod 5.6 Komunikacijski mod –– ready sendready send

� Ne preporučuje se korištenje ovog načina komunikacije� osim ako su nam performanse od velikog značaja

� Prototip ready send operacije – C verzija

� Prototip ready send operacije – Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

int MPI_Rsend(void *buf, int count, MPI_Datatype datatype,int dest, int tag, MPI_Comm comm);

MPI_RSEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, IERROR)

Page 161: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (161 od 258)

5.7 Send5.7 Send--receivereceive

� MPI funkcija koja objedinjuje dvije operacije� slanje poruke� primanje poruke

� Pogodno za procese koji istovremeno primaju i šalju poruke

� Dva oblika funkcije� MPI_Sendrecv()

• izvršava blokirajući send poziv i receive poziv• koristi odvojene buffer-e za slanje i primanje poruka

� MPI_Sendrecv_replace()• koristi isti buffer za slanje i primanje poruke• poslana poruka se prebriše s primljenom porukom

Poglavlje 5 – Point-to-point komunikacija

Page 162: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (162 od 258)

5.7 Send5.7 Send--receivereceive

� C verzija

– IN sendbuf početna adresa send buffer-a– IN sendcountbroj elemenata u send buffer-u– IN sendtype tip podataka koji se šalje– IN dest rank odredišnog procesa– IN sendtag tag poruke koja se šalje– OUT recvbuf početna adresa receive buffer-a– IN recvcount broj elemenata u receive buffer-u– IN recvtype tip podataka koji se prima– IN source rank izvorišnog procesa– IN recvtag tag poruke koja se prima– IN comm komunikator– OUT status status objekt

Poglavlje 5 – Point-to-point komunikacija

int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status);

Page 163: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (163 od 258)

5.7 Send5.7 Send--receivereceive

� C verzija

– INOUT buf početna adresa buffer-a– IN count broj elemenata u buffer-u– IN datatype tip podataka koji se šalje/prima– IN dest rank odredišnog procesa– IN sendtag tag poruke koja se šalje– IN source rank izvorišnog procesa– IN recvtag tag poruke koja se prima– IN comm komunikator– OUT status status objekt

Poglavlje 5 – Point-to-point komunikacija

int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, MPI_Comm comm, MPI_Status *status);

Page 164: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (164 od 258)

5.7 Send5.7 Send--receivereceive

� Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

MPI_SENDRECV(SENDBUF, SENDCOUNT, SENDTYPE, DEST, SENDTAG, RECVBUF, RECVCOUNT, RECVTYPE, SOURCE, RECVTAG, COMM, STATUS, IERROR)

MPI_SENDRECV_REPLACE(BUF, COUNT, DATATYPE, DEST, SENDTAG, SOURCE, RECVTAG, COMM, STATUS, IERROR)

Page 165: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (165 od 258)

5.8 Informacije o porukama5.8 Informacije o porukama

� Svaka MPI poruka se “enkapsulira” u komunikacijsku omotnicu koja sadrži sve bitne informacije o poruci

� Korisno za procese koji primaju poruke� Informacije o primljenoj poruci se mogu dobiti iz

argumenta status

� Deklaracija varijable tipa MPI_Status

Poglavlje 5 – Point-to-point komunikacija

/* za C*/

MPI_Status status;

ccccc za Fortran

INTEGER status(MPI_STATUS_SIZE)

Page 166: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (166 od 258)

5.8 Informacije o porukama5.8 Informacije o porukama

� MPI_Status je struktura koja sadrži tri polja� status.MPI_SOURCE � Fortran: status(MPI_SOURCE)

• rank procesa koji je poslao poruku

� status.MPI_TAG ���� Fortran: status(MPI_TAG) • tag poruke

� status.MPI_ERROR ���� Fortran: status(MPI_ERROR)• kôd pogreške primljene poruke

� Status argument vraća i informaciju o duljini poruke� ova informacija se ne nalazi u nekom dostupnom polju� njoj se pristupa preko posebne MPI funkcije� što nam argument count ne odaje tu informaciju?

• Ne! On predstavlja maksimalnu veličinu poruke koja se može primiti

Poglavlje 5 – Point-to-point komunikacija

Page 167: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (167 od 258)

5.8 Informacije o porukama5.8 Informacije o porukama

� Prototip MPI funkcije za dohvat veličine primljene poruke

� C verzija

– IN status argument iz pripadajuće recv funkcije– IN datatype tip podataka elem. primljene poruke

– OUT count broj primljenih elemenata

� Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count);

MPI_GET_COUNT(STATUS, DATATYPE, COUNT, IERROR)

Page 168: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (168 od 258)

5.8 Informacije o porukama5.8 Informacije o porukama

� Ponekad korištenje status varijable predstavlja dodatni overhead

� ako želimo izbjeći korištenje te varijable onda je dovoljno na mjestu status argumenta staviti konstantu MPI_STATUS_IGNORE

Poglavlje 5 – Point-to-point komunikacija

Page 169: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (169 od 258)

5.9 5.9 p2pp2p aplikacija aplikacija –– mjerenje vremenamjerenje vremena

� Korištenje ugrañenih MPI funkcija za mjerenje trajanja izvoñenja pojedinih komunikacijskih modova/oblika� C verzija

– vraća broj sekundi (u dvostrukoj preciznosti) proteklih od neke fiksne točke u prošlosti

– MPI mehanizmi su obavezni osigurati konstantnost te fiksne točke tijekom “života” pojedinog procesa, ali nisu obavezni sinkronizirati tu točku meñu različitim procesima!

– vraća period povećanja vrijednosti MPI_Wtime() brojača– npr. ako MPI_Wtime() povećava brojač svake mikrosekunde onda će

MPI_Wtick() vratiti vrijednost 10-6

Poglavlje 5 – Point-to-point komunikacija

double MPI_Wtime(void);

double MPI_Wtick(void);

Page 170: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (170 od 258)

5.9 5.9 p2pp2p aplikacija aplikacija –– mjerenje vremenamjerenje vremena

� Fortran verzija

Poglavlje 5 – Point-to-point komunikacija

DOUBLE PRECISION MPI_WTIME()

DOUBLE PRECISION MPI_WTICK()

Page 171: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (171 od 258)

5.9 5.9 p2pp2p aplikacija aplikacija –– mjerenje vremenamjerenje vremena

Poglavlje 5 – Point-to-point komunikacija

#include <stdio.h>#include "mpi.h"#define MASTER_RANK 0#define TRUE 1#define FALSE 0#define MESSAGE_SIZE 10000#define MAX_BUF 100000

int main(int argc, char **argv){

int i, msgsiz;int my_rank, i_am_the_master = FALSE, pool_size;double start_time, finish_time, tick_time;double message[MESSAGE_SIZE];char buffer[MAX_BUF];int buffer_size = MAX_BUF;MPI_Status status;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &pool_size);MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

1/5

Page 172: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (172 od 258)

5.9 5.9 p2pp2p aplikacija aplikacija –– mjerenje vremenamjerenje vremena

Poglavlje 5 – Point-to-point komunikacija

if(pool_size < 3){

printf("Pool size error...exiting!");MPI_Finalize();return 1;

}memset(message, 0, sizeof(double)*MESSAGE_SIZE);if(my_rank == MASTER_RANK){

i_am_the_master = TRUE;for(i=0; i<MESSAGE_SIZE; i++)

message[i] = 9999.9999;tick_time = MPI_Wtick();printf("Tick time = %f\n",tick_time);/* synchronized send */start_time = MPI_Wtime();MPI_Ssend(message, MESSAGE_SIZE, MPI_DOUBLE, 1, 1,

MPI_COMM_WORLD);finish_time = MPI_Wtime();printf("Time to send synchronized message of size %d is %f\n",

MESSAGE_SIZE, finish_time-start_time);

2/5

Page 173: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (173 od 258)

5.9 5.9 p2pp2p aplikacija aplikacija –– mjerenje vremenamjerenje vremena

Poglavlje 5 – Point-to-point komunikacija

/* standard send */start_time = MPI_Wtime();MPI_Send(message, MESSAGE_SIZE, MPI_DOUBLE, 2, 2,

MPI_COMM_WORLD);finish_time = MPI_Wtime();printf("Time to send standard message of size %d is %f\n",

MESSAGE_SIZE, finish_time-start_time);/* buffered send */MPI_Buffer_attach(buffer,buffer_size);start_time = MPI_Wtime();MPI_Bsend(message,MESSAGE_SIZE,MPI_DOUBLE,2,2,

MPI_COMM_WORLD);finish_time = MPI_Wtime();printf("Time to send buffered message of size %d is %f\n",

MESSAGE_SIZE, finish_time-start_time);MPI_Buffer_detach(&buffer,&buffer_size);/* ready send */start_time = MPI_Wtime();MPI_Rsend(message,MESSAGE_SIZE,MPI_DOUBLE,2,2,

MPI_COMM_WORLD);

3/5

Page 174: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (174 od 258)

5.9 5.9 p2pp2p aplikacija aplikacija –– mjerenje vremenamjerenje vremena

Poglavlje 5 – Point-to-point komunikacija

finish_time = MPI_Wtime();printf("Time to send ready message of size %d is %f\n", MESSAGE_SIZE, finish_time-start_time);

}else if(my_rank == 1){

MPI_Recv(message, MESSAGE_SIZE + 500, MPI_DOUBLE, MASTER_RANK, 1, MPI_COMM_WORLD, &status);

MPI_Get_count(&status, MPI_DOUBLE, &msgsiz);printf("Process with rank %d received message from rank %d with tag %d, message sizeis%d\n", my_rank,

status.MPI_SOURCE, status.MPI_TAG, msgsiz);}

else{

MPI_Recv(message, MESSAGE_SIZE, MPI_DOUBLE, MASTER_RANK, 2, MPI_COMM_WORLD, &status);

MPI_Recv(message, MESSAGE_SIZE, MPI_DOUBLE, MASTER_RANK, 2, MPI_COMM_WORLD, &status);

4/5

Page 175: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (175 od 258)

5.9 5.9 p2pp2p aplikacija aplikacija –– mjerenje vremenamjerenje vremena

Poglavlje 5 – Point-to-point komunikacija

MPI_Recv(message, MESSAGE_SIZE, MPI_DOUBLE, MASTER_RANK, 2, MPI_COMM_WORLD, &status);

}

MPI_Finalize();return 0;

5/5

Page 176: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (176 od 258)

5.9.1 “mjerenje vremena” 5.9.1 “mjerenje vremena” –– outputoutput

Poglavlje 5 – Point-to-point komunikacija

[sbuljat@cgi-sge example.4]$ mpicc -o PtoP PtoP.c

[sbuljat@cgi-sge example.4]$ mpiexec -n 3 ./PtoP

Tick time = 0.000001

Time to send synchronized message of size 10000 is 0.001790

Process with rank 1 received message from rank 0 with tag 1, message

size is 10000

Time to send standard message of size 10000 is 0.002131

Time to send buffered message of size 10000 is 0.000665

Time to send ready message of size 10000 is 0.000220

[sbuljat@cgi-sge example.4]$

1/1

Page 177: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (177 od 258)

5.10 5.10 p2pp2p aplikacija aplikacija –– numerička integracijanumerička integracija

� Parallel Trapezoidal Rule Integration� jednostavni oblik numeričkog integriranja funkcije na odreñenom

intervalu [a, b]� funkcija mora biti nenegativna� taj odreñeni integral je površina koja je odozgo omeñena funkcijom

f(x), odozdo s x-osi, a sa strana pravcima x = a i x =b� trapezno pravilo

• podjela površine na pravilne geometrijske oblike – trapezoide• svaki trapezoid ima bazu na x-osi, vertikalne stranice, a gornja stranica

je linija koja spaja pripadajuće točke na krivulji f(x)• radi jednostavnosti odabrane su jednake duljine baza za sve trapezoide

Poglavlje 5 – Point-to-point komunikacija

Page 178: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (178 od 258)

5.10 5.10 p2pp2p aplikacija aplikacija –– numerička integracijanumerička integracija

Poglavlje 5 – Point-to-point komunikacija

a b

y

x

Aproksimacija odreñenog integrala trapezoidimay

xxi-1 xi

f(x)f(xi-1)

f(xi)

h

� Ako imamo n trapezoida, baza � h = (b-a)/n� Interval i-tog trapezoida � [a + (i-1)*h, a + i*h]� Definiramo � a + i*h = xi� Duljina lijeve stranice trapezoida � f(xi-1)� Duljina desne stranice trapezoida � f(xi)

� Površina i-tog trapezoida �

� Površina svih trapezoida �

[ ])()(2

11 ii xfxfh +⋅ −

P =

+++++ − )(...)()(

2

)(

2

)(121

0

n

n xfxfxfxfxf

h

Page 179: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (179 od 258)

5.10 5.10 p2pp2p aplikacija aplikacija –– numerička integracijanumerička integracija

Poglavlje 5 – Point-to-point komunikacija

#include <stdio.h>#include "mpi.h"#define MASTER_RANK 0#define TRUE 1#define FALSE 0

int main(int argc, char **argv){

int i;int i_am_the_master = FALSE, my_rank, pool_size, tag = 0;MPI_Status status;float a = 0.0; // left endpointfloat b = 1.0; // right endpointint n = 1024; // number of trapezoidsfloat h; // trapezoid base lengthfloat local_a; // left endpoint my processfloat local_b; // right endpoint my processint local_n; // number of trapezoids for my calculationfloat integral; // integral over my intervalfloat total; // total integral

1/4

Page 180: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (180 od 258)

5.10 5.10 p2pp2p aplikacija aplikacija –– numerička integracijanumerička integracija

Poglavlje 5 – Point-to-point komunikacija

float Trap(float local_a, float local_b, int local_n, float h);MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &pool_size);MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);if(my_rank == MASTER_RANK)

i_am_the_master = TRUE;// same for all processesh = (b-a)/n;local_n = n/pool_size;// process dependentlocal_a = a + my_rank*local_n*h;local_b = local_a + local_n*h;integral = Trap(local_a, local_b, local_n, h);if(i_am_the_master){

total = integral;for(i=1; i<pool_size; i++){

MPI_Recv(&integral,1,MPI_FLOAT, i, tag, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

2/4

Page 181: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (181 od 258)

5.10 5.10 p2pp2p aplikacija aplikacija –– numerička integracijanumerička integracija

Poglavlje 5 – Point-to-point komunikacija

total += integral;}printf("With n = %d trapezoids, our estimate\n",n);printf("of the integral from %f to %f is %f\n",a,b,total);

} else{

MPI_Send(&integral, 1, MPI_FLOAT, MASTER_RANK, tag, MPI_COMM_WORLD);

}MPI_Finalize();return 0;

}float Trap(float local_a, float local_b, int local_n, float h){

float integral;float x;int i;float f(float x); // function to integrate

integral = (f(local_a) + f(local_b))/2.0;

3/4

Page 182: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (182 od 258)

5.10 5.10 p2pp2p aplikacija aplikacija –– numerička integracijanumerička integracija

Poglavlje 5 – Point-to-point komunikacija

x = local_a;for(i=1; i<=local_n-1; i++){

x += h;integral += f(x);

}integral *= h;return integral;

}float f(float x){

return x*x;}

4/4

Page 183: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (183 od 258)

5.10.1 “numerička integracija” 5.10.1 “numerička integracija” –– outputoutput

Poglavlje 5 – Point-to-point komunikacija

[sbuljat@cgi-sge example.5]$ mpicc -o trapezoidal trapezoidal.c

[sbuljat@cgi-sge example.5]$ mpiexec -n 4 ./trapezoidal

With n = 1024 trapezoids, our estimate

of the integral from 0.000000 to 1.000000 is 0.333333

[sbuljat@cgi-sge example.5]$

1/1

Page 184: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (184 od 258)

Poglavlje 6Poglavlje 6Neblokirajuća komunikacijaNeblokirajuća komunikacija

Predavač:

Stjepan Buljat

Page 185: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (185 od 258)

6.1 Uvod u neblokirajuću komunikaciju6.1 Uvod u neblokirajuću komunikaciju

� Kako poboljšati performanse paralelne aplikacije?� preklapanjem računskih operacija i komunikacijskih operacija

� Kako to postići?� višenitnost (multithreading)

� neblokirajuća komunikacija• post-send vs. complete-send• post-receive vs. complete-receive

• posebne funkcije za testiranje završetka komunikacije

� Kompatibilnost neblokirajućih i blokirajućih operacija?� poruke se mogu slati blokirajućim operacijama,a primati

neblokirajućim� vrijedi i obrnuto

Poglavlje 6 – Neblokirajuća komunikacija

Page 186: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (186 od 258)

6.1 Uvod u neblokirajuću komunikaciju6.1 Uvod u neblokirajuću komunikaciju

� Identificiranje komunikacijskih operacija� koriste se request objekti

• oni povezuju podnesene operacije i završetak te operacije

� request objekte alocira MPI� nalaze se u “sistemskoj” memoriji MPI� struktura objekta je skrivena od korisnika (opaque object)

� pristupa im se preko rukovatelja (handle)

� sve MPI funkcije za testiranje stanja komunikacije koriste request objekte

� kad se handle request objekta postavi na vrijednost MPI_REQUEST_NULL onda objekt postaje neispravan

• koriste ga funkcije za dealociranje request objekata

Poglavlje 6 – Neblokirajuća komunikacija

Page 187: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (187 od 258)

6.1 Uvod u neblokirajuću komunikaciju6.1 Uvod u neblokirajuću komunikaciju

• pozove se odgovarajuća funkcija za slanje poruke• izvorišni proces se odmah vraća iz tog poziva

• izvorišni proces ne smije dirati send buffer dok ga ne pročita odredišni proces � koriste se funkcije za testiranje završetka komunikacije

Poglavlje 6 – Neblokirajuća komunikacija

Neblokirajuća operacija slanja poruke

komunikator

3

1 0

4

send buffer

MESSAGE

5

receive buffer

2

Page 188: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (188 od 258)

6.2 Neblokirajuće 6.2 Neblokirajuće send send funkcijefunkcije

� Imaju gotovo identične argumente kao i blokirajuće funkcije, razlika je u dodatnom argumentu� handle request objekta

� Takoñer se dijele na četiri vrste� standard� synchronous� buffered� ready

Poglavlje 6 – Neblokirajuća komunikacija

Page 189: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (189 od 258)

6.2.1 Neblokirajući 6.2.1 Neblokirajući standardstandard--sendsend

� C verzija

� Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request);

MPI_ISEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, REQUEST, IERROR)

Page 190: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (190 od 258)

6.2.2 Neblokirajući 6.2.2 Neblokirajući synchronoussynchronous--sendsend

� C verzija

� Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Issend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request);

MPI_ISSEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, REQUEST, IERROR)

Page 191: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (191 od 258)

6.2.3 Neblokirajući 6.2.3 Neblokirajući bufferedbuffered--sendsend

� C verzija

� Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Ibsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request);

MPI_IBSEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, REQUEST, IERROR)

Page 192: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (192 od 258)

6.2.4 Neblokirajući 6.2.4 Neblokirajući readyready--sendsend

� C verzija

� Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Irsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request);

MPI_IRSEND(BUF, COUNT, DATATYPE, DESTINATION, TAG, COMM, REQUEST, IERROR)

Page 193: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (193 od 258)

6.3 Neblokirajuća 6.3 Neblokirajuća receive receive funkcijafunkcija

� Neblokirajuća operacija primanja poruke se koristi kad želimo da odredišni proces istovremeno čeka na primanje poruke i radi nešto korisno

Poglavlje 6 – Neblokirajuća komunikacija

komunikator

3

1 0

4

send buffer5

receive buffer

MESSAGE

2

Neblokirajuća operacija primanje poruke

Page 194: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (194 od 258)

6.3 Neblokirajuća 6.3 Neblokirajuća receive receive funkcijafunkcija

� C verzija

� Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int src,int tag, MPI_Comm comm, MPI_Request *request);

MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR)

Page 195: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (195 od 258)

6.4 Operacije za testiranje završetka 6.4 Operacije za testiranje završetka komunikacijekomunikacije

� Dijele se na dva dijela s obzirom na blokirajuće ili neblokirajuće svojstvo:� WAIT

• blokirajuća operacija testiranja• blokira sve dok testirana komunikacija ne završi

� TEST• neblokirajuća operacija testiranja• vraća true ili false; ovisno o statusu komunikacije

� Komunikacija se testira preko request objekta� Kad se komunikacija obavi onda ove operacije i

dealociraju request objekt

Poglavlje 6 – Neblokirajuća komunikacija

Page 196: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (196 od 258)

6.4 Operacije za testiranje završetka 6.4 Operacije za testiranje završetka komunikacijekomunikacije

� MPI_Wait( ) : C verzija

– INOUT request rukovatelj request objekta– OUT status status objekt

� MPI_Wait( ) : Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Wait(MPI_Request *request, MPI_Status *status);

MPI_WAIT(REQUEST, STATUS, IERROR);

Page 197: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (197 od 258)

6.4 Operacije za testiranje završetka 6.4 Operacije za testiranje završetka komunikacijekomunikacije

� MPI_Test( ) : C verzija

– INOUT request rukovatelj request objekta– OUT flag TRUE ako je komunikacija završila

– OUT status status objekt

� MPI_Test( ) : Fortran verzija

– LOGICAL FLAG

– INTEGER REQUEST, STATUS(MPI_STATUS_SIZE), IERROR

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Test(MPI_Request *request, int *flag, MPI_Status*status);

MPI_TEST(REQUEST, FLAG, STATUS, IERROR);

Page 198: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (198 od 258)

6.4 Operacije za testiranje završetka 6.4 Operacije za testiranje završetka komunikacijekomunikacije

� Obje operacije dealociraju request objekt� kad se komunikacija obavi

• kôd MPI_Test() : kad je flag = TRUE

� postavljaju ga na vrijednost MPI_REQUEST_NULL� “ručna” dealokacija request objekta

• C verzija

– INOUT request rukovatelj request objekta

• Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Request_free(MPI_Request *request);

MPI_REQUEST_FREE(REQUEST, IERROR);

Page 199: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (199 od 258)

6.4 Operacije za testiranje završetka 6.4 Operacije za testiranje završetka komunikacijekomunikacije

� Obje operacije vraćaju i informacije o komunikaciji preko status objekta

� Kako pogledati status aktivne komunikacije, a da se pritom ne dealocira request objekt?� C verzija

– IN request rukovatelj request objekta– OUT flag boolean zastavica, analogno MPI_Test– OUT status ako je flag=TRUE

� Status objektu možemo pristupiti ako je komunikacija završila, a da pritom ne dealociramo request objekt

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Request_get_status(MPI_Request *request, int *flag, MPI_Status *status);

Page 200: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (200 od 258)

6.4 Operacije za testiranje završetka 6.4 Operacije za testiranje završetka komunikacijekomunikacije

� Fortran verzija

– INTEGER REQUEST, STATUS(MPI_STATUS_SIZE), IERROR– LOGICAL FLAG

Poglavlje 6 – Neblokirajuća komunikacija

MPI_REQUEST_GET_STATUS(REQUEST, FLAG, STATUS, IERROR);

Page 201: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (201 od 258)

6.4.1 Veći broj aktivnih komunikacija6.4.1 Veći broj aktivnih komunikacija

� Moguće je testirati stanje većeg broja aktivnih komunikacija preko posebnih MPI funkcija

� S obzirom na broj komunikacija koje se testiraju ove operacije se dijele na:� ALL

• testiranje završetka svih neblokirajućih komunikacija

� ANY• testiranje završetka bilo koje komunikacije, ali samo jedne

� SOME• testiranje završetka barem jedne komunikacije, ali vraća sve one

komunikacije koje su završile

Poglavlje 6 – Neblokirajuća komunikacija

Page 202: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (202 od 258)

6.4.1.1 Testiranje završetka svih komunikacija6.4.1.1 Testiranje završetka svih komunikacija

� MPI_Waitall( ) : C verzija

– IN count broj aktivnih komunikacija– INOUT array_of_reqs polje rukovatelja req objekata– OUT array_of_stats polje status objektata

� MPI_Waitall( ) : Fortran verzija

– INTEGER COUNT, ARRAY_OF_REQUESTS(*)– INTEGER ARRAY_OF_STATS(MPI_STATUS_SIZE, *), IERROR

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Waitall(int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses);

MPI_WAITALL(COUNT, ARRAY_OF_REQUESTS, ARRAY_OF_STATUSES, IERROR);

Page 203: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (203 od 258)

6.4.1.1 Testiranje završetka svih komunikacija6.4.1.1 Testiranje završetka svih komunikacija

� MPI_Testall( ) : C verzija

– IN count broj aktivnih komunikacija– INOUT array_of_reqs polje rukovatelja req objekata

– OUT flag TRUE ako su svi završili

– OUT array_of_stats polje status objekata

� MPI_Testall( ) : Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Testall(int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses);

MPI_TESTALL(COUNT, ARRAY_OF_REQS, FLAG, ARRAY_OF_STATS);

Page 204: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (204 od 258)

6.4.1.2 Testiranje završetka bilo koje 6.4.1.2 Testiranje završetka bilo koje komunikacijekomunikacije

� MPI_Waitany( ) : C verzija

– IN count broj aktivnih komunikacija– INOUT array_of_reqs polje rukovatelja req objekata

– OUT index indeks komunikacije koja je završila

– OUT status status objekt

� MPI_Waitany( ) : Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Waitany(int count, MPI_Request *array_of_requests, int *index, MPI_Status *status);

MPI_WAITANY(COUNT, ARRAY_OF_REQUESTS, INDEX, STATUS, IERROR);

Page 205: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (205 od 258)

6.4.1.2 Testiranje završetka bilo koje 6.4.1.2 Testiranje završetka bilo koje komunikacijekomunikacije

� MPI_Testany( ) : C verzija

– IN count broj aktivnih komunikacija– INOUT array_of_reqs polje rukovatelja req objekata

– OUT index indeks komunikacije koja je završila

– OUT flag TRUE ako je netko završio– OUT status status objekt

� MPI_Testany( ) : Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Testany(int count, MPI_Request *array_of_reqs, int *index, int *flag, MPI_Status *status);

MPI_TESTANY(COUNT, ARRAY_OF_REQS, INDEX, FLAG, STATUS, IERROR);

Page 206: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (206 od 258)

6.4.1.3 Testiranje završetka nekog broja 6.4.1.3 Testiranje završetka nekog broja komunikacijakomunikacija

� MPI_Waitsome( ) : C verzija

– IN incount veličina polja array_of_reqs

– INOUT array_of_reqs polje rukovatelja req objekata

– OUT outcount broj završenih komunikacija– OUT array_of_inds polje dovršenih komunikacija

– OUT array_of_stats polje status objekata

� MPI_Waitsome( ) : Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Waitsome(int incount, MPI_Request *array_of_reqs, int *outcount, int *array_of_indices, MPI_Status *array_of_stats);

MPI_WAITSOME(INCOUNT, ARRAY_OF_REQS, OUTCOUNT, ARRAY_OF_INDS, ARRAY_OF_STATS, IERROR);

Page 207: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (207 od 258)

6.4.1.3 Testiranje završetka nekog broja 6.4.1.3 Testiranje završetka nekog broja komunikacijakomunikacija

� MPI_Testsome( ) : C verzija

� MPI_Testsome( ) : Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Testsome(int incount, MPI_Request *array_of_reqs, int *outcount, int *array_of_indices, MPI_Status *array_of_stats);

MPI_TESTSOME(INCOUNT, ARRAY_OF_REQS, OUTCOUNT, ARRAY_OF_INDICES, ARRAY_OF_STATS, IERROR);

Page 208: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (208 od 258)

6.4.2 Ostale pomoćne funkcije6.4.2 Ostale pomoćne funkcije

� Probe� provjerava stanje nadolazeće poruke bez da je se primi� informacija o poruci se dobiva preko status objekta� postoje dva oblika

• neblokirajući• blokirajući

� prednost• alociranje receive buffer-a ovisno o veličini poruke

� Cancel� prekida “viseću” komunikaciju, ona koja još nije obavljena� potrebno je “ručno” dealocirati request objekt

• preko status objekta kojeg vrati dealokacija se mogu saznati informacije o prekinutoj komunikaciji

Poglavlje 6 – Neblokirajuća komunikacija

Page 209: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (209 od 258)

6.4.2 Ostale pomoćne funkcije6.4.2 Ostale pomoćne funkcije

� Send-init & Receive-init (persistent communication request)� pozivanje većeg broja funkcija za slanje/primanje poruka s istom

listom argumenata� može se smanjiti komunikacijski overhead� povežu se potrebni argumenti s trajnim komunikacijskim zahtjevom i

onda je samo potrebno preko request objekta iniciratikomunikacijske pozive

� pozivi MPI_Send_init() i MPI_Recv_init() služe za inicijalizaciju trajnog komunikacijskog poziva neblokirajućih send/receive funkcija

• nakon tog poziva komunikacija je i dalje neaktivna

� aktivacija komunikacije se postiže pozivima • MPI_Start()

• MPI_Startall()

Poglavlje 6 – Neblokirajuća komunikacija

Page 210: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (210 od 258)

6.4.2.1 Probe6.4.2.1 Probe

� Blokirajući oblik: C verzija

– IN source rank izvorišnog procesa– IN tag tag poruke

– IN comm komunikator

– OUT status status objekt

� Blokirajući oblik: Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status);

MPI_PROBE(SOURCE, TAG, COMM, STATUS, IERROR);

Page 211: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (211 od 258)

6.4.2.1 Probe6.4.2.1 Probe

� Neblokirajući oblik: C verzija

– IN source rank izvorišnog procesa– IN tag tag poruke

– IN comm komunikator

– OUT flag TRUE ako je pronañena odg. poruka– OUT status status objekt

� Neblokirajući oblik: Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status);

MPI_IPROBE(SRC, TAG, COMM, FLAG, STATUS, IERROR);

Page 212: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (212 od 258)

6.4.2.2 Cancel6.4.2.2 Cancel

� C verzija

– IN request rukovatelj request objekta

� Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Cancel(MPI_Request *request);

MPI_CANCEL(REQUEST, IERROR);

Page 213: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (213 od 258)

6.4.2.2.1 Test6.4.2.2.1 Test--canceledcanceled

� C verzija

– IN status status objekt– OUT flag TRUE ako je komunikacija prekinuta

� Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Test_canceled(MPI_Status *status, int *flag);

MPI_TEST_CANCELED(STATUS, FLAG, IERROR);

Page 214: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (214 od 258)

6.4.2.3 Send6.4.2.3 Send--init & Receiveinit & Receive--initinit

� C verzija

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Send_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request);

int MPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Request *request);

Page 215: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (215 od 258)

6.4.2.3 Send6.4.2.3 Send--init & Receiveinit & Receive--initinit

� Fortran verzija

Poglavlje 6 – Neblokirajuća komunikacija

MPI_SEND_INIT(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR);

MPI_RECV_INIT(BUF, COUNT, DATATYPE, SRC, TAG, COMM, REQUEST, IERROR);

Page 216: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (216 od 258)

� Aktivacija komunikacije: C verzija� jedan request objekt

� polje request objekata

6.4.2.3 Send6.4.2.3 Send--init & Receiveinit & Receive--initinit

Poglavlje 6 – Neblokirajuća komunikacija

int MPI_Start(MPI_Request *request);

int MPI_Startall(int count, MPI_Request *array_of_reqs);

Page 217: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (217 od 258)

� Aktivacija komunikacije: Fortran verzija� jedan request objekt

� polje request objekata

6.4.2.3 Send6.4.2.3 Send--init & Receiveinit & Receive--initinit

Poglavlje 6 – Neblokirajuća komunikacija

MPI_START(REQUEST, IERROR);

MPI_STARTALL(COUNT, ARRAY_OF_REQS, IERROR);

Page 218: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (218 od 258)

…… kraj drugog dana …kraj drugog dana …

Page 219: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (219 od 258)

MPI Workshop @ SRCEMPI Workshop @ SRCE

radionica no.1Uvod u Message Passing Interface

Sveučilišni računski centar, Zagreb28. lipnja – 30. lipnja, 2005.

Page 220: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (220 od 258)

PonavljanjePonavljanjeMPI funkcijeMPI funkcije

Predavač:

Stjepan Buljat

Page 221: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (221 od 258)

1.1 C funkcije1.1 C funkcije

Ponavljanje – MPI funkcije

int MPI_Comm_size(MPI_Comm comm, int *size)Determines the size of the group associated with a communicator

int MPI_Comm_rank(MPI_Comm comm, int *rank)Determines the rank of the calling process in the communicator

int MPI_Cancel(MPI_Request *request)Cancels a communication request

int MPI_Buffer_detach(void *buffer, int *size)Removes an existing buffer

int MPI_Buffer_attach(void *buffer, int size)Attaches a user-defined buffer for sending

int MPI_Bsend_init(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

Builds a handle for a buffered send

int MPI_Bsend(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm)Basic send with user-specified buffering

int MPI_Abort(MPI_Comm comm, int errorcode)Terminates MPI execution environment

Page 222: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (222 od 258)

1.1 C funkcije1.1 C funkcije

Ponavljanje – MPI funkcije

int MPI_Get_count(MPI_Status *status, MPI_Datatype dtype, int *count)Gets the number of “top-level” elements

int MPI_Iprobe(int src, int tag, MPI_Comm comm, int *flag, MPI_Status *status)Nonblocking test for a message

int MPI_Initialized(int *flag)Indicates whether MPI_Init has been called

int MPI_Init(int *argc, char ***argv)Initializes the MPI execution enviroment

int MPI_Ibsend(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

Starts a nonblocking buffered send

int MPI_Get_version(int *version, int *subversion)Returns the version of MPI

int MPI_Get_processor_name(char *name, int *resultlen)Gets the name of the processor

int MPI_Finalize(void)Terminates MPI execution enviroment

Page 223: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (223 od 258)

1.1 C funkcije1.1 C funkcije

Ponavljanje – MPI funkcije

int MPI_Irecv(void *buf, int count, MPI_Datatype dtype, int src, int tag, MPI_Comm comm, MPI_Request *request)

Begins a nonblocking receive

int MPI_Recv_init(void *buf, int count, MPI_Datatype dtype, int src, int tag, MPI_Comm comm, MPI_Request *request)

Creates a handle for receive

int MPI_Recv(void *buf, int count, MPI_Datatype dtype, int src, int tag, MPI_Comm comm, MPI_Status *status)

Basic receive

int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)Blocking test for a message

int MPI_Issend(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

Starts a nonblocking synchronous send

int MPI_Isend(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

Starts a nonblocking send

int MPI_Irsend(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

Starts a nonblocking ready send

Page 224: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (224 od 258)

1.1 C funkcije1.1 C funkcije

Ponavljanje – MPI funkcije

int MPI_Request_free(MPI_Request *request)Frees a communication request object

int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype dtype, int dest, int sendtag, int source, int recvtag, MPI_Comm comm, MPI_Status *status)

Sends and receives a message using a single buffer

int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status)

Sends and receives a message

int MPI_Send_init(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

Builds a handle for standard send

int MPI_Send(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm)Basic send

int MPI_Rsend_init(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

Builds a handle for ready send

int MPI_Rsend(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm)Basic ready send

Page 225: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (225 od 258)

1.1 C funkcije1.1 C funkcije

Ponavljanje – MPI funkcije

int MPI_Testany(int count, MPI_Request *array_of_requests, int *index, int *flag, MPI_Status *status)

Tests for the completion of any previously initiated communication

int MPI_Testall(int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses)

Tests for the completion of all previously initiated communication

int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status)Tests for the completion of a send or receive

int MPI_Startall(int count, MPI_Request *array_of_requests)Starts a collection of requests

int MPI_Start(MPI_Request *request)Initiates a communication with a persistent request handle

int MPI_Ssend_init(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

Builds a handle for a synchronous send

int MPI_Ssend(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm)Basic synchronous send

Page 226: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (226 od 258)

1.1 C funkcije1.1 C funkcije

Ponavljanje – MPI funkcije

double MPI_Wtime(void)Returns an elapsed time on the calling processor

double MPI_Wtick(void)Returns the resolution of MPI_Wtime

int MPI_Waitsome(int incount, MPI_Request *array_of_requests, int *outcount, int *array_of_indices, MPI_Status *array_of_statuses)

Waits for some given communications to complete

int MPI_Waitany(int count, MPI_Request *array_of_requests, int *indeks, MPI_Status *status)Waits for any specified send or receive to complete

int MPI_Waitall(int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses)Waits for all given communications to complete

int MPI_Wait(MPI_Request *request, MPI_Status *status)Waits for an MPI send or receive to complete

int MPI_Test_cancelled(MPI_Status *status, int *flag)Tests to see whether a request was cancelled

int MPI_Testsome(int incount, MPI_Request *array_of_requests, int *outcount, int *array_of_indices, MPI_Status *array_of_statuses)

Tests for some given communications to complete

Page 227: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (227 od 258)

1.2 Fortran funkcije1.2 Fortran funkcije

Ponavljanje – MPI funkcije

MPI_Cancel(request, ierror)integer request, ierror

MPI_Buffer_detach(buffer, size, ierror)<type> buffer(*)integer size, ierror

MPI_Buffer_attach(buffer, size, ierror)<type> buffer(*)integer size, ierror

MPI_Bsend_init(buf, count, dtype, dest, tag, comm, request, ierror)<type> buffer(*)integer count, dtype, dest, tag, comm, request, ierror

MPI_Bsend(buf, count, dtype, dest, tag, comm, ierror)<type> buffer(*)integer count, dtype, dest, tag, comm, ierror

MPI_Abort(comm, errorcode, ierror)integer comm, errorcode, ierror

Page 228: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (228 od 258)

1.2 Fortran funkcije1.2 Fortran funkcije

Ponavljanje – MPI funkcije

MPI_Get_processor_name(name, resultlen, ierror)character*(MPI_MAX_PROCESSOR_NAME) nameinteger resultlen, ierror

MPI_Init(ierror)integer ierror

MPI_Ibsend(buf, count, dtype, dest, tag, comm, request, ierror)<type> buf(*)integer count, dtype, dest, tag, comm, request, ierror

MPI_Get_version(version, subversion, ierror)integer version, subversion, ierror

MPI_Get_count(status, dtype, count, ierror)integer status(*), dtype, count, ierror

MPI_Finalize(ierror)integer ierror

MPI_Comm_size(comm, size, ierror)integer comm, size, ierror

MPI_Comm_rank(comm, rank, ierror)integer comm, rank, ierror

Page 229: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (229 od 258)

1.2 Fortran funkcije1.2 Fortran funkcije

Ponavljanje – MPI funkcije

MPI_Issend(buf, count, dtype, dest, tag, comm, request, ierror)<type> buf(*)integer count, dtype, dest, tag, comm, request, ierror

MPI_Isend(buf, count, dtype, dest, tag, comm, request, ierror)<type> buf(*)integer count, dtype, dest, tag, comm, request, ierror

MPI_Irsend(buf, count, dtype, dest, tag, comm, request, ierror)<type> buf(*)integer count, dtype, dest, tag, comm, request, ierror

MPI_Irecv(buf, count, dtype, source, tag, comm, request, ierror)<type> buf(*)integer count, dtype, source, tag, comm, request, ierror

MPI_Iprobe(source, tag, comm, flag, status, ierror)integer source, tag, comm, status(*), ierrorlogical flag

MPI_Initialized(flag, ierror)logical flaginteger ierror

Page 230: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (230 od 258)

1.2 Fortran funkcije1.2 Fortran funkcije

Ponavljanje – MPI funkcije

MPI_ Rsend(buf, count, dtype, dest, tag, comm, ierror)<type> buf(*)integer count, dtype, dest, tag, comm, ierror

MPI_Request_free(request, ierror)integer request, ierror

MPI_Recv_init(buf, count, dtype, source, tag, comm, request, ierror)<type> buf(*)integer count, dtype, source, tag, comm, request, ierror

MPI_Recv(buf, count, dtype, source, tag, comm, status, ierror)<type> buf(*)integer count, dtype, source, tag, comm, status(*), ierror

MPI_Recv(buf, count, dtype, source, tag, comm, status, ierror)<type> buf(*)integer count, dtype, source, tag, comm, status(*), ierror

MPI_Probe(source, tag, comm, status, ierror)integer source, tag, comm, status(*), ierror

Page 231: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (231 od 258)

1.2 Fortran funkcije1.2 Fortran funkcije

Ponavljanje – MPI funkcije

MPI_Sendrecv_replace(buf, count, dtype, dest, sendtag, source, recvtag, comm, status, ierror)<type> buf(*) integer count, type, dest, sendtag, source, recvtag, comm, status(*), ierror

MPI_Sendrecv(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, recvcount, recvtype, source, recvtag, comm, status, ierror)

<type> sendbuf(*), recvbuf(*)integer sendcount, sendtype, dest, sendtag, recvcount, recvtype, source, recvtag, comm, status(*),

ierror

MPI_Send_init(buf, count, dtype, dest, tag, comm, request, ierror)<type> buf(*)integer count, dytpe, dest, tag, comm, request, ierror

MPI_Send(buf, count, dtype, dest, tag, comm, ierror)<type> buf(*)integer count, dytpe, dest, tag, comm, ierror

MPI_Rsend_init(buf, count, dtype, dest, tag, comm, request, ierror)<type> buf(*)integer count, dtype, dest, tag, comm, request, ierror

Page 232: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (232 od 258)

1.2 Fortran funkcije1.2 Fortran funkcije

Ponavljanje – MPI funkcije

MPI_Testall(count, array_of_requests, flag, array_of_statuses, ierror)integer count, array_of_requests(*), array_of_statuses(MPI_STATUS_SIZE,*), ierrorlogical flag

MPI_Test(request, flag, status, ierror)integer request, status(*), ierrorlogical flag

MPI_Startall(count, array_of_requests, ierror)integer count, array_of_requests(*), ierror

MPI_Start(request, ierror)integer request, ierror

MPI_Ssend_init(buf, count, dtype, dest, tag, comm, request, ierror)<type> buf(*)integer count, dytpe, dest, tag, comm, request, ierror

MPI_Ssend(buf, count, dtype, dest, tag, comm, ierror)<type> buf(*)integer count, dytpe, dest, tag, comm, ierror

Page 233: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (233 od 258)

1.2 Fortran funkcije1.2 Fortran funkcije

Ponavljanje – MPI funkcije

MPI_Waitany(count, array_of_requests, index, status, ierror)integer count, array_of_requests(*), index, status(*), ierror

MPI_Waitall(count, array_of_requests, array_of_statuses, ierror)integer count, array_of_requests(*), array_of_statuses(MPI_STATUS_SIZE,*), ierror

MPI_Wait(request, status, ierror)integer request, status(*), ierror

MPI_Test_cancelled(status, flag, ierror)integer status(*), ierrorlogical flag

MPI_Testsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses, ierror)

integer incount, array_of_requests(*), outcount, array_of_indices(*), array_of_statuses(MPI_STATUS_SIZE,*), ierror

MPI_Testany(count, array_of_requests, index, flag, status, ierror)integer count, array_of_requests(*), index, status(*), ierrorlogical flag

Page 234: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (234 od 258)

1.2 Fortran funkcije1.2 Fortran funkcije

Ponavljanje – MPI funkcije

double precision MPI_Wtime()

double precision MPI_Wtick()

MPI_Waitsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses, ierror)

integer incount, array_of_requests(*), outcount, array_of_indices(*), array_of_statuses(MPI_STATUS_SIZE,*), ierror

Page 235: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (235 od 258)

Zadatak 1Zadatak 1Računanje broja Računanje broja ππ (pi)(pi)

Page 236: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (236 od 258)

1.1 Uvod1.1 Uvod

� Jedna od metoda računanja broja π� numerička integracija integrala

� numerička integracija preko pravokutnog pravila• integracijska krivulja se aproksimira pravokutnikom u svakom podintervalu

� interval [0, 1] se dijeli na n intervala, duljine h = 1.0/n

� svaki podinterval se aproksimira konstantnom vrijednošću f(xi) u sredini podintervala xi

Zadatak 1 – Računanje broja PI

∫ =+

1

0 2 41

1 πdx

x

Page 237: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (237 od 258)

1.1 Uvod1.1 Uvod

� Pravokutno (step) pravilo� jednadžba integrala

Zadatak 1 – Računanje broja PI

x4 x5x3x2x1 ba

y

x

f(x)

[ ]∫ ++++==b

axfxfxfxfxfhdxxfI )()()()()()( 54321

Page 238: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (238 od 258)

1.2 Upute1.2 Upute

� master/slave model� master proces takoñer treba obavljati koristan rad

� Pseudo-kôd� master proces iz datoteke “čita” broj intervala na koje želimo

raspodijeliti interval integracione krivulje� master proces odašilje taj broj svim slave procesima� nakon što slave proces sazna broj intervala, on računa površinu

ispod funkcije za komad intervala num_interval/pool_size

� slave proces nakon izračuna šalje tu vrijednost master procesu� zbroj svih tih parcijalnih suma predstavlja aproksimaciju broja pi

Zadatak 1 – Računanje broja PI

Page 239: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (239 od 258)

1.3 Rješenje1.3 Rješenje

Zadatak 1 – Računanje broja PI

#include "mpi.h"#define MASTER_RANK 0#define TRUE 1#define FALSE 0

int main(int argc, char **argv){

double PI25 = 3.141592653589793238462643;int my_rank, pool_size, i;int i_am_the_master = FALSE, num_interval;double mypi, pi, h, sum, x, a;FILE *f;

MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &pool_size);MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);if(my_rank == MASTER_RANK)

i_am_the_master = TRUE;

1/3

Page 240: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (240 od 258)

1.3 Rješenje1.3 Rješenje

Zadatak 1 – Računanje broja PI

if(i_am_the_master){

f = fopen("ulaz.txt","r");fscanf(f,"%d",&num_interval);fclose(f);if(num_interval == 0)

MPI_Finalize();for(i=1; i<pool_size; i++)

MPI_Send(&num_interval,1,MPI_INT,i,i,MPI_COMM_WORLD);}elseMPI_Recv(&num_interval,1,MPI_INT,MASTER_RANK,my_rank,

MPI_COMM_WORLD, MPI_STATUS_IGNORE);h = 1.0/(double)num_interval;sum = 0.0;for(i=my_rank + 1; i<=num_interval; i+=pool_size){

x = h*((double)i - 0.5);sum += 4.0/(1.0 + x*x);

}

2/3

Page 241: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (241 od 258)

1.3 Rješenje1.3 Rješenje

Zadatak 1 – Računanje broja PI

mypi = h * sum;if(!i_am_the_master)MPI_Send(&mypi,1,MPI_DOUBLE,MASTER_RANK,my_rank,

MPI_COMM_WORLD);else{

pi = mypi;for(i=1; i<pool_size; i++){

MPI_Recv(&mypi, 1, MPI_DOUBLE, i, i, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

pi += mypi;}printf("PI je aproksimirano %.16f, greska je %.16f\n", pi, fabs(pi-PI25));

}MPI_Finalize();

}

3/3

Page 242: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (242 od 258)

Zadatak 2Zadatak 2Množenje matricaMnoženje matrica

Page 243: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (243 od 258)

2.1 Uvod2.1 Uvod

� Bank queue model� varijanta master/slave modela� treba imati veći broj neovisnih poslova� master proces sadrži taj red poslova

• šalje poslove slave procesima po potrebi

� svaki od slave procesa obavlja svoj dio posla, a po završetku posla rezultat šalje master procesu

• ako ima još poslova u redu poslova onda taj proces dobiva novi posao– na ovaj način se nastoji što optimalnije raspodijeliti posao meñu procesima

� problem ove metode• pravilno odrediti veličinu posla

– communication/computation ratio

Zadatak 2 – Množenje matrica

Page 244: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (244 od 258)

2.1 Uvod2.1 Uvod

� Zadatak� pomnožiti (paralelno) matricu A s vektor-stupcem b� obje matrice su proizvoljne veličine� obje matrice treba inicijalizirati na neke početne veličine� master proces ne treba obavljati koristan rad

=

×

mkmkmm

k

k

c

c

c

b

b

b

aaa

aaa

aaa

......

...

............

...

...

2

1

2

1

21

22221

11211

Zadatak 2 – Množenje matrica

kjikjiji

k

l

ljil babababacij ⋅++⋅+⋅=⋅=∑=

...2211

1

Page 245: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (245 od 258)

2.2 Upute2.2 Upute

� Pseudo-kôd� master proces treba inicijalizirati matricu A i vektor-stupac b na

proizvoljne vrijednosti• veličine matrica su proizvoljne

– matrice moraju biti ulančane, tj . matrica A mora imati onoliko stupaca koliko b ima redaka

� master proces svakom slave procesu šalje kopiju vektora b� master proces u red poslova stavlja retke matrice A

• počinje odašiljanje poslova slave procesima

� slave procesi vraćaju rezultat master procesu• master proces rezultat sprema u posebnu matricu• ako postoji još poslova onda šalje posao tom procesu, inače vraća

terminacijsku poruku

Zadatak 2 – Množenje matrica

Page 246: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (246 od 258)

2.3 Rješenje2.3 Rješenje

Zadatak 2 – Množenje matrica

#include <stdio.h>#include <mpi.h>#define COLS 10#define ROWS 10#define TRUE 1#define FALSE 0#define MASTER_RANK 0

int main(int argc, char **argv){

int pool_size, my_rank, destination;int i_am_the_master = FALSE;int a[ROWS][COLS], b[ROWS], c[ROWS], i, j;int int_buffer[BUFSIZ];MPI_Status status;

MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &pool_size);MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);if(my_rank == MASTER_RANK) i_am_the_master = TRUE;

1/5

Page 247: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (247 od 258)

2.3 Rješenje2.3 Rješenje

Zadatak 2 – Množenje matrica

if(i_am_the_master) {int row, count, sender;for(i=0; i<COLS; i++) {

b[i] = 5;for(j=0; j<ROWS; j++) a[i][j] = i;

}for(i=0; i<pool_size; i++)

if(i != my_rank)MPI_Send(b,ROWS,MPI_INT,i,i,MPI_COMM_WORLD);

count = 0;for(destination=0; destination<pool_size; destination++) {

if(destination != my_rank) {for(j=0; j<COLS; j++) int_buffer[j] = a[count][j];

MPI_Send(int_buffer, COLS, MPI_INT, destination, count, MPI_COMM_WORLD);

printf("Sent row %d from %d\n",count,destination);count++;

}}

2/5

Page 248: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (248 od 258)

2.3 Rješenje2.3 Rješenje

Zadatak 2 – Množenje matrica

for(i=0; i<ROWS; i++){ MPI_Recv(int_buffer, BUFSIZ, MPI_INT, MPI_ANY_SOURCE,

MPI_ANY_TAG, MPI_COMM_WORLD, &status);sender = status.MPI_SOURCE;row = status.MPI_TAG;c[row] = int_buffer[0];printf("\treceived row %d from %d\n",row,sender);if(count < ROWS) {

for(j=0; j<COLS; j++) int_buffer[j] = a[count][j];MPI_Send(int_buffer, COLS, MPI_INT, sender, count,

MPI_COMM_WORLD);printf("Sent row %d from %d\n",count,sender);count++;

}else {

MPI_Send(NULL, 0, MPI_INT, sender, ROWS, MPI_COMM_WORLD);

printf("Terminated process %d with tag %d\n", sender,ROWS);

}} }

3/5

Page 249: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (249 od 258)

2.3 Rješenje2.3 Rješenje

Zadatak 2 – Množenje matrica

else // i_am_not_master{

int sum, row;MPI_Recv(b, COLS, MPI_INT, MASTER_RANK, my_rank, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

MPI_Recv(int_buffer, COLS, MPI_INT, MASTER_RANK,MPI_ANY_TAG, MPI_COMM_WORLD,&status);while(status.MPI_TAG != ROWS){

row = status.MPI_TAG;sum = 0;for (i=0; i<COLS; i++) sum += int_buffer[i]*b[i];int_buffer[0] = sum;MPI_Send(int_buffer, 1, MPI_INT, MASTER_RANK, row,

MPI_COMM_WORLD);MPI_Recv(int_buffer, COLS, MPI_INT, MASTER_RANK, MPI_ANY_TAG, MPI_COMM_WORLD, &status);

}}

4/5

Page 250: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (250 od 258)

2.3 Rješenje2.3 Rješenje

Zadatak 2 – Množenje matrica

if(i_am_the_master){

for(i=0; i<ROWS; i++)printf("\nRjesenje - %d ",c[i]);

printf("\n");}MPI_Finalize();return 0;

}

5/5

Page 251: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (251 od 258)

PregledPregledObraObraññene temeene teme

Page 252: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (252 od 258)

4.1 Sažetak4.1 Sažetak

� modeli paralelnih računala� paralelna programska okruženja� paradigme paralelnog programiranja� strategije razvoja paralelnih aplikacija� metodološki dizajn paralelnih algoritama� analiza performansi� prevoñenje-pokretanje MPI aplikacija� osnove MPI komunikacija� osnovne MPI primitive (skup G6)� p2p komunikacija

Pregled – Obrañene teme

Page 253: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (253 od 258)

4.1 Sažetak4.1 Sažetak

� osnovni MPI tipovi podataka� komunikacijski modovi (p2p)� neblokirajuće operacije� operacije za mjerenje vremena� informacije o porukama (status objekt)

Pregled – Obrañene teme

Page 254: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (254 od 258)

PregledPregledTeme sljedeće radioniceTeme sljedeće radionice

Page 255: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (255 od 258)

5.1 Uvod5.1 Uvod

� Sljedeća radionica � Intermediate-Advanced MPI @ Srce� predviñeno okvirno održavanje

• na jesen 2005. godine

� uvodi naprednije mogućnosti koje MPI pruža� preporuča se upoznati s materijalima ove radionice prije nego se

krene slušati napredna radionica� nastojat će se uvesti najnovije mogućnosti MPI-2 standarda

Pregled – Teme sljedeće radionice

Page 256: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (256 od 258)

5.2 Teme5.2 Teme

� kolektivna komunikacija� jednostrana komunikacija (MPI-2)� user-defined tipovi podatka� komunikatori

� intrakomunikatori� interkomunikatori

� grupe� topologije� paralelni I/O (MPI-2)� rukovanje greškama� debugging

Pregled – Teme sljedeće radionice

Page 257: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (257 od 258)

5.2 Teme5.2 Teme

� MPI Profiling

� C++ binding (MPI-2)� dinamičko kreiranje procesa (MPI-2)� …

Pregled – Teme sljedeće radionice

Page 258: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (258 od 258)

…… kraj …kraj …

…… hvala na dolasku hvala na dolasku ☺☺

Page 259: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (259 od 258)

Neblokirajuća vs. Blokirajuća komunikacijaNeblokirajuća vs. Blokirajuća komunikacija

� Blokirajuća komunikacija� blokiraj izvršavanje procesa dok se lokalne operacije ne izvrše

• ne znači da je komunikacija obavljena� nije nužno sinkrona komunikacija

� Neblokirajuća komunikacija� nastavi izvršavanje procesa, a komunikaciju prepusti “nekom”

drugom (npr. komunikacijskom procesoru)� nije nužno asinkrona komunikacija

• nekad su se ova dva pojma koristila u jednakom smislu• uspješna blokirajuća asinkrona komunikacija brzo vraća kontrolu

programu i send buffer se može ponovno koristiti• svaki neblokirajući poziv odmah vraća kontrolu programu, ali buffer se

ne smije “dirati” sve dok se komunikacija ne obavi– to provjeravamo s posebnim funkcijama (MPI_Wait,…)

Dodatak – A

Page 260: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (260 od 258)

Dodatak – A

proces 0 proces 1

MPI_Isend

MPI_Recv

vrije

me

odmah se nastavljarad procesa

neblokirajuća komunikacija

neblokirajuća

komunikacijathread ofexecution

buffering mehanizam���� kom. procesor ?

slanje poruke

proces 0 proces 1

MPI_Send

{MPI_Recv

vrije

me

zaustavi proces

blokirajuća komunikacija

slanje poruke

blokirajućakomunikacijasinkroni

ilibuffered

Page 261: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (261 od 258)

Sinkrona vs. Asinkrona komunikacijaSinkrona vs. Asinkrona komunikacija

� Sinkrona komunikacija� nije nužno blokirajuća komunikacija� handshake protokol

• pošiljatelj obavješćuje primatelja da želi slati podatke• primatelj šalje pošiljaocu potvrdu primitka poruke i time mu dopušta

slanje podataka• pošiljatelj šalje podatke, tj. poruku

� osigurana dostava podataka

� Asinkrona komunikacija� nije nužno neblokirajuća komunikacija� Buffered send je oblik asinkrone komunikacije

• pošiljatelj obavijesti primatelja da će spremiti poruku u neki buffer

• pošiljatelj nastavlja s radom, smatra da je komunikacija gotova • kad je primatelj spreman onda on prebaci tu poruku u svoju memoriju

Dodatak – A

Page 262: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (262 od 258)

Dodatak – A

proces 0 proces 1

MPI_Ssend

{ MPI_Recv

zahtjev za slanje

dopuštenje (ack)

slanje poruke

vrije

me

zaustaviproces

obaprocesa

nastavljaju

MPI_Ssend( ) pozvan prije MPI_Recv( )

proces 0 proces 1

MPI_Ssend

MPI_Recv

}zahtjev za slanje dopuštenje (ack) slanje poruke

vrije

me

zaustaviproces

obaprocesa

nastavljaju

MPI_Recv( ) pozvan prije MPI_Ssend( )

Blokirajućasinkrona

komunikacija

Page 263: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (263 od 258)

StandardStandard--send operacijasend operacija

� Može se implementirati na dva načina� buffered send� synchronous send

� Najčešće se male poruke šalju s buffered-send, a velike poruke sa synchronous-send� tko odlučuje kad je poruka malena, a kada velika?

• implementacija• može se i ručno podešavati preko posebnih varijabli okruženja??

� za buffered-send se koristi interni buffer (sistemski)• MPI_Bsend() takoñer može koristiti taj isti interni buffer, ali nema

garancije da će komunikacija uspjeti ako nema user-specified buffer-a

Dodatak – A

Page 264: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (264 od 258)

Safe programmingSafe programming

� “SAFE” program se ne oslanja na “baferiranje”� “UNSAFE” program se može oslanjati na “baferiranje”, ali

onda nije prenosiv� može se dogoditi da je na nekom drugom sustavu MPI_Send()

ostvaren kao sinkroni send � može doći do deadlock-a!

Dodatak – A

--proces 0--memorija

--proces 1--memorija

A

B

A

B

MPI_Send(A,…);MPI_Recv(B,…);

MPI_Send(A,…);MPI_Recv(B,…);zahtijeva se

buffering daop. uspije

Page 265: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (265 od 258)

Safe programmingSafe programming

� MPI_Ssend() može uzrokovati potpuni zastoj

Dodatak – A

0

1

2

34

kôd u svakom procesu:

MPI_Ssend(…, right_rank,…);MPI_Recv(…, left_rank,…);

Deadlock around the ring

MPI_Ssend( ) će uzrokovatideadlock jer se MPI_Recv

ne može pozvati!

�isto bi bilo i s MPI_Send( )za velike poruke

Page 266: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (266 od 258)

Safe programmingSafe programming

� Koristeći neblokirajuću komunikaciju mogu se izbjeći situacije s mogućim potpunim zastojem� da se koristila neblokirajuća komunikacija kod problema “deadlock

around the ring” onda bi nakon send operacije mogli pozvati receive operaciju i tako izbjeći potpuni zastoj

• jer neblokirajuća komunikacija odmah vraća kontrolu programu (thread

of execution)

� Oprez!• sve dok se komunikacija zapravo ne obavi ne smiju se koristiti varijble

preko kojih šaljemo poruke � inače bi mogli poslati krive podatke!

• to ne vrijedi za blokirajuću komunikaciju…

Dodatak – A

Page 267: MPI Workshop @ SRCE · modeliranje lijekova geologija (istraživanje nalazišta nafte, predvi ñanje potresa) ra čunalna grafika (animacija, specijalni efekti, renderiranje, …)

MPI Workshop @ SRCE / radionica no.1 (267 od 258)

Safe programmingSafe programming

� Neblokirajuća komunikacija nije 100% otporna na deadlock� ako koristimo neblokirajuće operacije slanja i primanja poruke, a

pozivamo MPI_Wait() tada komunikacija opet poprima blokirajući karakter…rješenje

• treba preklapati neblokirajući send sa blokirajućim receive

• ili, obrnuto

� neblokirajući pozivi su uvijek ispred blokirajućih

Dodatak – A