Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr

Слични документи
Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Matrice. Algebarske operacije s matricama. - Predavanje I

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

2015_k2_z12.dvi

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

Slide 1

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Programiranje 1 3. predavanje prošireno Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 3. predava

Državna matura iz informatike

Slide 1

Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

Орт колоквијум

(Microsoft Word - Dr\236avna matura - studeni osnovna razina - rje\232enja)

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

(Microsoft Word - Dr\236avna matura - kolovoz ni\236a razina - rje\232enja)

Numerička matematika 11. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. p

Uvod u računarstvo 2+2

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

P11.3 Analiza zivotnog veka, Graf smetnji

JMBAG IME I PREZIME BROJ BODOVA 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja (Knjige, bilježnice, dodatni papiri i kalkulatori n

08 RSA1

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

7. predavanje Vladimir Dananić 14. studenoga Vladimir Dananić () 7. predavanje 14. studenoga / 16

Analiticka geometrija

Microsoft Word - 6ms001

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programiranje 1

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

Algoritmi SŠ P1

Dvostruki integrali Matematika 2 Erna Begović Kovač, Literatura: I. Gusić, Lekcije iz Matematike 2

Primjena neodredenog integrala u inženjerstvu Matematika 2 Erna Begović Kovač, Literatura: I. Gusić, Lekcije iz Matematike 2

Elementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razredu Elementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razr

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Fortran

Programiranje 1 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2015, 1. predavanje p.1/49

Microsoft PowerPoint - C-4-1

Programiranje 1 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 1. predavanje p. 1/4

CIJELI BROJEVI 1.) Kako još nazivamo pozitivne cijele brojeve? 1.) Za što je oznaka? 2.) Ispiši skup prirodnih brojeva! 3.) Kako označavamo skup priro

Microsoft Word - 6. RAZRED INFORMATIKA.doc

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

PowerPoint Presentation

Konacne grupe, dizajni i kodovi

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

(Microsoft Word - Dr\236avna matura - svibanj osnovna razina - rje\232enja)

Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp

ALIP1_udzb_2019.indb

s2.dvi

РЕПУБЛИКА СРПСКА МИНИСТАРСТВО ПРОСВЈЕТЕ И КУЛТУРЕ РЕПУБЛИЧКИ ПЕДАГОШКИ ЗАВОД Милоша Обилића 39 Бањалука, Тел/факс 051/ , 051/ ; p

Microsoft Word - 12ms121

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

ТЕОРИЈА УЗОРАКА 2

sve.dvi

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

PEDAGOŠKI ZAVOD TUZLA u saradnji s UDRUŽENJEM MATEMATIČARA TUZLANSKOG KANTONA Takmičenje učenika srednjih škola Tuzlanskog kantona iz MATEMATIKE Tuzla

(Microsoft Word - Rje\232enja zadataka)

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Tutoring System for Distance Learning of Java Programming Language

(Microsoft Word - Dr\236avna matura - kolovoz osnovna razina - rje\232enja)

Računalne mreže

1 MATEMATIKA 1 (prva zadaća) Vektori i primjene 1. U trokutu ABC točke M i N dijele stranicu AB na tri jednaka dijela. O

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Mihael Maltar MATRICE UDALJENOSTI U GRAFOVIMA Diplomski rad Voditelj rada:

Microsoft Word - 1. REALNI BROJEVI- formulice

Stručno usavršavanje

PLAN I PROGRAM ZA DOPUNSKU (PRODUŽNU) NASTAVU IZ MATEMATIKE (za 1. razred)

P1.1 Analiza efikasnosti algoritama 1

Microsoft Word - predavanje8

Microsoft Word - 09_Frenetove formule

ŽUPANIJSKO NATJECANJE IZ MATEMATIKE 28. veljače razred - rješenja OVDJE SU DANI NEKI NAČINI RJEŠAVANJA ZADATAKA. UKOLIKO UČENIK IMA DRUGAČIJI

UAAG Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević

knjiga.dvi

EFIKASNO MODELIRANJE REALNIH OPTIMIZACIONIH PROBLEMA Tatjana Davidović Matematički institut SANU tanjad

Microsoft Word - VEROVATNOCA II deo.doc

Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова

Microsoft Word - Lekcija 11.doc

Увод у организацију и архитектуру рачунара 1

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL završni ispit 6. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1.

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

INF INFORMATIKA INF.35.HR.R.K1.24 INF D-S

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr

PowerPoint Presentation

Logičke izjave i logičke funkcije

Veeeeeliki brojevi

Matematika 1 - izborna

atka 26 (2017./2018.) br. 102 NEKE VRSTE DOKAZA U ČAROBMATICI Jadranka Delač-Klepac, Zagreb jednoj smo priči spomenuli kako je važno znati postavljati

Numerička matematika 1. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 1. pre

Pripreme 2016 Indukcija Grgur Valentić lipanj Zadaci su skupljeni s dva predavanja na istu temu, za učenike od prvog do trećeg razreda i za MEMO

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

Uvod u obične diferencijalne jednadžbe Metoda separacije varijabli Obične diferencijalne jednadžbe Franka Miriam Brückler

Vektorske funkcije i polja Mate Kosor / 23

Funkcije predavač: Nadežda Jakšić

MAT B MATEMATIKA osnovna razina MATB.38.HR.R.K1.20 MAT B D-S

(Microsoft Word - Dr\236avna matura - lipanj osnovna razina - rje\232enja)

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Diskretna matematika Sveučilište u Rijeci ODJEL ZA INFORMATIKU Radmile Matejčić 2, Rijeka Akademska 2017./2018.godina DISKRETNA MATEMATIKA Studij: Pre

Транскрипт:

Oblikovanje i analiza algoritama 4. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. predavanje p. 1/69

Sadržaj predavanja Složenost u praksi eksperimenti (nastavak): Množenje matrica reda n. Blokovsko množenje matrica reda n. OAA 2017, 4. predavanje p. 2/69

Informacije web stranica Moja web stranica za Oblikovanje i analizu algoritama je https://web.math.pmf.unizg.hr/~singer/oaa/ ili, skraćeno https://web.math.hr/~singer/oaa/ Kopija je na adresi http://degiorgi.math.hr/~singer/oaa/ Službena web stranica za Oblikovanje i analizu algoritama je https://web.math.pmf.unizg.hr/nastava/oaa/ OAA 2017, 4. predavanje p. 3/69

Informacije kolokviji Oblikovanje i analiza algoritama je u kolokvijskom razredu B1. Službeni termini svih kolokvija su: Prvi kolokvij: srijeda, 22. 11. 2017., u 9 sati. Drugi kolokvij: srijeda, 31. 1. 2018., u 9 sati. Popravni kolokvij: srijeda, 14. 2. 2018., u 9 sati. Uputa: izbjegnite popravni obavite to ranije! OAA 2017, 4. predavanje p. 4/69

Množenje matrica OAA 2017, 4. predavanje p. 5/69

Množenje matrica Problem: Zadan je prirodni broj n N i 3 matrice A, B i C, reda n. Treba izračunati izraz C := C +A B. Akumulacija ( nazbrajavanje ) produkta A B u matrici C standardni je oblik BLAS 3 rutine xgemm za množenje matrica, tj. baš ova operacija se često koristi u praksi. Usput, to će opet prevariti optimizaciju compilera, kod višestrukog ponavljanja eksperimenta. OAA 2017, 4. predavanje p. 6/69

Množenje matrica formula Matematička realizacija matrične operacije po elementima je trivijalna: C := C +A B c ij := c ij + n k=1 a ik b kj, za sve indekse i = 1,...,n, j = 1,...,n. Dakle, programski treba zavrtiti tri petlje. OAA 2017, 4. predavanje p. 7/69

Množenje matrica potprogram c c c c c c subroutine mulijk (lda, n, a, b, c) Matrix multiply C(n, n) = C(n, n) + A(n, n) * B(n, n). implicit none integer lda, n double precision a(lda, lda), b(lda, lda), $ c(lda, lda) integer i, j, k, nn OAA 2017, 4. predavanje p. 8/69

Množenje matrica potprogram (nastavak) c c c c IJK loop, inner nn = n do 30, i = 1, nn do 20, j = 1, nn do 10, k = 1, nn c(i, j) = c(i, j) + a(i, k) * b(k, j) 10 continue 20 continue 30 continue return end OAA 2017, 4. predavanje p. 9/69

Permutacija petlji Ovu varijantu algoritma zovemo ijk opet po poretku (indeksa) petlji, izvana prema unutra. Sve tri petlje možemo permutirati, tj. napisati ih u bilo kojem poretku. Na taj način dobivamo ukupno 6 varijanti algoritma, koje zovemo leksikografskim redom: ijk, ikj, jik, jki, kij, kji. OAA 2017, 4. predavanje p. 10/69

Broj operacija U svakom prolazu kroz unutarnju petlju imamo dvije operacije: množenje matričnih elemenata a ik b kj, zbrajanje tog produkta s c ij. Sve tri petlje imaju (svaka) točno n prolaza. Ukupan broj operacija u svim varijantama algoritma je: F(n) = 2n 3. Broj ponavljanja N(n) izabran je tako da dobijemo približno konstantno trajanje okolne petlje (s ponavljanjem) kojoj mjerimo vrijeme, sve dok N(n) ne padne na 1, za n = 450. OAA 2017, 4. predavanje p. 11/69

Boje na grafovima Legenda za čitanje grafova: petlja ijk zeleno, rang 3; petlja ikj narančasta, rang 5; petlja jik žuta, rang 4; petlja jki ljubičasta, rang 1; petlja kij crveno, rang 6; petlja kji plavo, rang 2. OAA 2017, 4. predavanje p. 12/69

BabyBlue, CVF, normal Compaq Visual Fortran: normalna optimizacija: prvo 6 pojedinačnih slika, leksikografskim redom, po petljama, a zatim, zajednički graf za svih 6 petlji. fast optimizacija: permutira petlje, tako da svih 6 petlji daje gotovo istu brzinu. Usporedba: najbrže petlje jki u fast optimizaciji i MKL-ovog algoritma DGEMM. OAA 2017, 4. predavanje p. 13/69

BabyBlue, CVF, normal ijk Pentium 4/660, 3.6 GHz, CVF, normal Množenje matrica ijk 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 14/69

BabyBlue, CVF, normal ikj Pentium 4/660, 3.6 GHz, CVF, normal Množenje matrica ikj 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 15/69

BabyBlue, CVF, normal jik Pentium 4/660, 3.6 GHz, CVF, normal Množenje matrica jik 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 16/69

BabyBlue, CVF, normal jki Pentium 4/660, 3.6 GHz, CVF, normal Množenje matrica jki 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 17/69

BabyBlue, CVF, normal kij Pentium 4/660, 3.6 GHz, CVF, normal Množenje matrica kij 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 18/69

BabyBlue, CVF, normal kji Pentium 4/660, 3.6 GHz, CVF, normal Množenje matrica kji 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 19/69

BabyBlue, CVF, normal 2500 Pentium 4/660, 3.6 GHz, CVF, normal Množenje matrica brzina u Mflopsima 2000 1500 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 20/69

BabyBlue, CVF, fast 2500 Pentium 4/660, 3.6 GHz, CVF, fast Množenje matrica brzina u Mflopsima 2000 1500 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 21/69

BabyBlue, CVF, fast najbrži i MKL Pentium 4/660, 3.6 GHz, CVF, MKL Množenje matrica 6000 brzina u Mflopsima 4000 2000 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 22/69

BabyBlue, IVF, normal Intel Visual Fortran: normalna optimizacija: prvo 6 pojedinačnih slika, leksikografskim redom, po petljama, a zatim, zajednički graf za svih 6 petlji. fast optimizacija: permutira petlje, tako da imamo 3 para petlji s gotovo istom brzinom. Usporedba: najbrže petlje jki u fast optimizaciji i MKL-ovog algoritma DGEMM. OAA 2017, 4. predavanje p. 23/69

BabyBlue, IVF, normal ijk Pentium 4/660, 3.6 GHz, IVF, normal Množenje matrica ijk 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 24/69

BabyBlue, IVF, normal ikj Pentium 4/660, 3.6 GHz, IVF, normal Množenje matrica ikj 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 25/69

BabyBlue, IVF, normal jik Pentium 4/660, 3.6 GHz, IVF, normal Množenje matrica jik 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 26/69

BabyBlue, IVF, normal jki Pentium 4/660, 3.6 GHz, IVF, normal Množenje matrica jki 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 27/69

BabyBlue, IVF, normal kij Pentium 4/660, 3.6 GHz, IVF, normal Množenje matrica kij 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 28/69

BabyBlue, IVF, normal kji Pentium 4/660, 3.6 GHz, IVF, normal Množenje matrica kji 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 29/69

BabyBlue, IVF, normal 2500 Pentium 4/660, 3.6 GHz, IVF, normal Množenje matrica brzina u Mflopsima 2000 1500 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 30/69

BabyBlue, IVF, fast 2500 Pentium 4/660, 3.6 GHz, IVF, fast Množenje matrica brzina u Mflopsima 2000 1500 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 31/69

BabyBlue, IVF, fast najbrži i MKL Pentium 4/660, 3.6 GHz, IVF, MKL Množenje matrica 6000 brzina u Mflopsima 4000 2000 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 32/69

Tablica brzina za velike n Usporedba brzina (u Mflops) samo na BabyBlue: po petljama (uključivo i MKL), za normal i fast opcije kod oba compilera. Petlja normal CVF normal IVF fast CVF fast IVF ijk 229.0 228.4 1186.3 1086.4 ikj 106.7 106.5 1186.5 1086.0 jik 204.8 205.1 1185.3 1248.7 jki 1034.2 839.0 1186.4 1249.1 kij 95.0 94.9 1185.1 543.3 kji 544.0 538.6 1185.7 543.3 MKL 5945.7 5967.3 5966.5 5967.6 OAA 2017, 4. predavanje p. 33/69

Ostala računala Vrlo slično ponašanje brzina za petlje vidi se i na ostalim računalima. Grafovi su skraćeni tako da sadrže redom: usporedbu brzina svih 6 petlji za normal i fast opcije compilera (samo CVF), usporedbu najbrže fast petlje MKL-a. OAA 2017, 4. predavanje p. 34/69

Klamath5, CVF, normal Pentium III, 500 MHz, CVF, normal Množenje matrica brzina u Mflopsima 200 150 100 50 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 35/69

Klamath5, CVF, fast Pentium III, 500 MHz, CVF, fast Množenje matrica brzina u Mflopsima 200 150 100 50 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 36/69

Veliki, CVF, normal Pentium 4, 3.0 GHz, CVF, normal Množenje matrica 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 37/69

Veliki, CVF, fast Pentium 4, 3.0 GHz, CVF, fast Množenje matrica 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 38/69

Klamath5, CVF, fast najbrži i MKL 400 Pentium III, 500 MHz, CVF, MKL Množenje matrica brzina u Mflopsima 300 200 100 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 39/69

Veliki, CVF, fast najbrži i MKL Pentium 4, 3.0 GHz, CVF, MKL Množenje matrica 6000 brzina u Mflopsima 4000 2000 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 40/69

Komentar rezultata Kod množenja matrica, za razliku od zbrajanja, svaki ulazni podatak koristimo puno puta, (preciznije, točno n puta). Zato brzina cache memorije može doći do izražaja, pa možemo dobiti bitno veće brzine nego kod zbrajanja. Cache memorija je glavni krivac za: razlike u brzinama izmedu raznih varijanti, i povećanu brzinu za male n-ove. Ponavljanje eksperimenta ima neku ulogu samo za vrlo male redove n. Osim toga, za n 450 nema ponavljanja. OAA 2017, 4. predavanje p. 41/69

Komentar rezultata (nastavak) Brže su one varijante koje učestalije koriste iste podatke, dok su oni još u cacheu. Dokaz: Cache se puni u blokovima, kako su matrice spremljene. Najbrža bi trebala biti ona varijanta koja sekvencijalno prolazi kroz elemente u sve 3 matrice u unutarnjoj naredbi c(i, j) = c(i, j) + a(i, k) * b(k, j) U Fortranu, zbog spremanja matrice po stupcima, prvi indeks se brže mijenja. Zato mora biti: i unutar j, i unutar k, k unutar j. Dakle, najbrža varijanta algoritma je jki, što zaista i je! OAA 2017, 4. predavanje p. 42/69

Komentar rezultata (nastavak) Zadnji argument da je krivac cache memorija. Konstruktivni dokaz: Blokovskom realizacijom algoritma za velike n možemo postići gotovo iste brzine kao i za male n (tj. spriječiti pad brzine). Ovo, naravno, ide samo onda kad za velike n dobijemo pad brzine. U protivnom, compiler se već pobrinuo da optimalno iskoristi cache. Primjer za IVF da to radi za normal, pa čak i za fast opciju. OAA 2017, 4. predavanje p. 43/69

Blokovsko množenje matrica primjer OAA 2017, 4. predavanje p. 44/69

Blokovsko množenje matrica primjer IVF s normal opcijom za jik petlju daje brzine: 1050MFlops za n 50, 205MFlops za velike n. IVF s normal opcijom za jki petlju daje brzine: 1100MFlops za n 300, 840MFlops za velike n. IVF s fast opcijom za jki petlju daje brzine: 2000MFlops za n 300, 1250MFlops za velike n. OAA 2017, 4. predavanje p. 45/69

BabyBlue, IVF, normal jik obični i blok (50) Pentium 4/660, 3.6 GHz, IVF, normal Množ. mat. jik (50) 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 46/69

BabyBlue, IVF, normal jkiobični i blok (300) Pentium 4/660, 3.6 GHz, IVF, normal Množ. mat. jki (300) 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 47/69

BabyBlue, IVF, fast jki obični i blok (300) 2500 Pentium 4/660, 3.6 GHz, IVF, fast Množ. mat. jki (300) brzina u Mflopsima 2000 1500 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 48/69

Blokovsko množenje matrica OAA 2017, 4. predavanje p. 49/69

Množenje matrica Problem: Zadan je prirodni broj n N i 3 matrice A, B i C, reda n. Treba izračunati izraz C := C +A B. Znamo da je realizacija po elementima trivijalna c ij := c ij + n k=1 a ik b kj, za sve indekse i = 1,...,n, j = 1,...,n. Dakle, programski treba zavrtiti tri petlje. OAA 2017, 4. predavanje p. 50/69

Množenje matrica realizacija po elementima Programska realizacija na skalarnoj razini (po elementima) ima ovaj opći oblik: 3 petlje po i, j, k, svaka od 1 do n, operacija unutar tih petlji je c ij := c ij +a ik b kj, tj. množenje i zbrajanje skalara. Ove tri petlje smijemo permutirati pa dobivamo 6 različitih varijanti osnovnog algoritma: ijk, ikj, jik, jki, kij, kji. OAA 2017, 4. predavanje p. 51/69

Množenje matrica podjela na blokove Matrice A i B možemo podijeliti na blokove A 11 A 12 A 1r B 11 B 12 B 1q A A = 21 A 22 A 2r..., B = B 21 B 22 B 2q.... A p1 A p2 A pr B r1 B r2 B rq Ako su blokovi A ik i B kj takvi da se mogu množiti za sve indekse i, j, k, onda operaciju C = C +A B možemo izračunati po blokovima, gdje je r C ij = C ij + A ik B kj, i = 1,...,p, j = 1,...,q. k=1 OAA 2017, 4. predavanje p. 52/69

Množenje matrica blokovi (nastavak) Podjela matrica A i B na blokove koji se mogu množiti inducira podijelu matrice C na blokove C 11 C 12 C 1q C C = 21 C 22 C 2q.... C p1 C p2 C pq Pojednostavljenje: sve tri ulazne matrice su kvadratne reda n pa ih dijelimo na isti način u blokove. Dakle, p = q = r = (oznaka) = N, gdje je N tzv. blok red matrice. OAA 2017, 4. predavanje p. 53/69

Množenje matrica blokovi (nastavak) Podjela sve tri matrice A, B i C ima isti oblik (napisan za C) C 11 C 12 C 1N C C = 21 C 22 C 2N.... C N1 C N2 C NN Pojedini blokovi podmatrice A ij, B ij i C ij su matrice istog tipa, označimo ga s n i n j. Uočite da blokovi ne moraju više biti kvadratne matrice općenito su pravokutne. OAA 2017, 4. predavanje p. 54/69

Množenje matrica blokovi (nastavak) Za veličine blokova mora vrijediti N i=1 n i = n. Kako se odreduju veličine blokova n i, za i = 1,...,N malo kasnije. Matrična operacija C = C +A B sad ima blokovski oblik N C ij = C ij + A ik B kj, i = 1,...,N, j = 1,...,N. k=1 OAA 2017, 4. predavanje p. 55/69

Množenje matrica realizacija po blokovima Programska realizacija na blokovskoj razini (po blokovima) ima ovaj opći oblik: 3 petlje po i, j, k, svaka od 1 do N, operacija unutar tih petlji je C ij := C ij +A ik B kj, tj. množenje i zbrajanje matrica. Ova operacija ima isti oblik xgemm kao i cijeli polazni problem ( rekurzija ), samo što matrice ne moraju biti kvadratne (n i n j ) = (n i n j )+(n i n k ) (n k n j ). OAA 2017, 4. predavanje p. 56/69

Blokovsko množenje matrica petlje Tri petlje za blokove smijemo permutirati pa dobivamo 6 različitih varijanti blokovskog algoritma: ijk, ikj, jik, jki, kij, kji. Za unutarnje množenje pojedinih blokova, takoder, imamo odgovarajućih 6 varijanti osnovnog algoritma. Dakle, sve skupa, imamo 36 varijanti! Tko hoće, neka proba sve. Ja neću. U nastavku koristim istu varijantu (permutaciju petlji) i za blokovski i za osnovni (skalarni) algoritam. OAA 2017, 4. predavanje p. 57/69

Blokovsko množenje matrica veličine blokova Ideja: veličine blokova izabrati tako da se unutarnje množenje blokova C ij := C ij +A ik B kj (operacija xgemm) obavlja u cacheu. Postupak. Iz tablice brzina za odabrani osnovni algoritam nademo približni maksimalni red n za koji još dobivamo punu cache brzinu. Nazovimo taj red s n cache. OAA 2017, 4. predavanje p. 58/69

Veličine blokova (nastavak) Cilj podjele na blokove je unutarnje množenje blokova mora raditi s matricama veličine manje (ili jednake) n cache. Dakle, mora vrijediti Tome dodajemo raniji uvjet n i n cache, i = 1,...,N. N i=1 n i = n. Iz ovih uvjeta možemo odrediti broj blokova N. OAA 2017, 4. predavanje p. 59/69

Broj blokova N Uvrstimo n i n cache, za i = 1,...,N, u relaciju za zbroj. Izlazi N n = n i N n cache, ili i=1 N n n cache. Broj blokova N mora biti cijeli broj i još (prirodno) želimo da N bude što manji najmanji mogući! Onda treba uzeti N = n n cache = n+ncache 1. n cache OAA 2017, 4. predavanje p. 60/69

Veličine blokova (nastavak) Za nalaženje n i standardno se koriste dva pristupa. equal sized ili uniform svi n i imaju podjednaku veličinu n i n/n, tj. razlika medu njima je najviše 1. greedy svi n i imaju maksimalnu veličinu n cache, osim, eventualno, jednog od njih (prvi ili zadnji). Ako želimo dobiti jednoznačnost rastava na blokove, zgodno je uzeti da su veličine blokova n i sortirane uzlazno ili silazno. U nastavku uzimamo silazni poredak n 1 n 2 n N. OAA 2017, 4. predavanje p. 61/69

Equal sized podjednake veličine blokova Definiramo ostatak n r := n mod N. Podjela na blokove izlazi iz rastava broja n oblika n ( n n n = N +n r = (N n r ) +n r N N N ) +1. Veličine blokova n i u silaznom poretku su n +1, za i = 1,...,n r, N n i = n, za i = n r +1,...,N. N OAA 2017, 4. predavanje p. 62/69

Greedy maksimalne veličine blokova Definiramo ostatak n r := n mod n cache. Podjela na blokove izlazi iz rastava broja n oblika n n = n cache +n r. n cache Veličine blokova n i u silaznom poretku su n i = n cache, i = 1,...,N 1, n N = { ncache, za n r = 0 (tj. n cache dijeli n), n r, za n r > 0. OAA 2017, 4. predavanje p. 63/69

Veličine blokova (nastavak) U primjerima se koristi equal sized ili uniform podjela. Napomena. Pravu (najbolju) vrijednost za n cache odredujemo testiranjem blokovskog algoritma! (Taj treba biti što brži.) OAA 2017, 4. predavanje p. 64/69

Blokovsko množenje matrica indeksi I još, da nam se indeksi i oznake ne pomiješaju što indeksira blokove, a što elemente, dodajemo podindeks b za sve što se odnosi na blokove. OAA 2017, 4. predavanje p. 65/69

Blokovsko množenje matrica primjer IVF s normal opcijom za jik petlju daje brzine: 1050MFlops za n 50, 205MFlops za velike n. IVF s normal opcijom za jki petlju daje brzine: 1100MFlops za n 300, 840MFlops za velike n. IVF s fast opcijom za jki petlju daje brzine: 2000MFlops za n 300, 1250MFlops za velike n. OAA 2017, 4. predavanje p. 66/69

BabyBlue, IVF, normal jik obični i blok (50) Pentium 4/660, 3.6 GHz, IVF, normal Množ. mat. jik (50) 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 67/69

BabyBlue, IVF, normal jkiobični i blok (300) Pentium 4/660, 3.6 GHz, IVF, normal Množ. mat. jki (300) 1500 brzina u Mflopsima 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 68/69

BabyBlue, IVF, fast jki obični i blok (300) 2500 Pentium 4/660, 3.6 GHz, IVF, fast Množ. mat. jki (300) brzina u Mflopsima 2000 1500 1000 500 0 0 500 1000 1500 2000 red matrice OAA 2017, 4. predavanje p. 69/69