Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady...

76
Zaawansowane metody obliczeń numerycznych 2018

Transcript of Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady...

Page 1: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Zaawansowanemetodyobliczeńnumerycznych

2018

Page 2: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Zaawansowane…?

• Algorytmy(skuteczniejsze)• Dokładnośćobliczeń!• Szybkośćobliczeń• Obliczeniarównoległe• Paradygmatyprogramowania• Językiprogramowania• Biblioteki• Narzędziaprogramisty• Elementyteoriiobliczeń

�2

Page 3: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

…przykłady

• MnożeniemacierzyA1A2…An-1An• Numeryczneobliczaniepochodnych,całek.MetodaRichardsona.

• Obliczaniepinapprocesorach.• Fortran,java,prolog,haskel,…• Typydefiniowane,parametryzowane• BLAS,Lapack,BLACS,MKL,itd.• make,gawk,sed,emacs• Problemstopu.MaszynaTuringa.Rozstrzygalność.

�3

Page 4: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

MNOŻENIE2MACIERZY-KOSZTMnożeniemacierzy

�4

Page 5: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Macierze.PseudokodC=ABKosztmnożenia2macierzy.(Cormen,Leiserson,Rivest)

MATRIX-MULTIPLY(A, B)1 if columns[A] ≠ rows[B]2 then error "incompatible dimensions"3 else for i ← 1 to rows[A]4 do for j ← 1 to columns[B]5 do C[i, j] ← 06 for k ← 1 to columns[A]7. do C[i, j] ← C[i, j] + A[i, k] ° B[k, j]8 return C

KOSZT: ~ p*q*r

�5

Page 6: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

MNOŻENIEWIELUMACIERZYMnożeniemacierzy

�6

Page 7: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

TEST(2-3minuty)

Proszepoliczyć

JAKIJESTKOSZTMNOŻENIA

A1(300,10)A2(10,300)A3(300,10)?

�7

Page 8: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

A1(300,10)A2(10,300)A3(300,10)

• [A1(300,10)xA2(10,300)]xA3(300,10)=>• 300*10*300+300*300*10=1800000

• A1(300,10)x[A2(10,300)xA3(300,10)]• 10*300*10+300*10*10=60000

• 1800000/60000=3000razyszybciej!�8

Page 9: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

ALGORYTMMnożeniemacierzy

�9

Page 10: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

A1A2A3A4A5

�10

Page 11: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

MEMOIZATION-WYNIKIPOWTARZANE

Mnożeniemacierzy

�11

Page 12: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

memoization(WIKIPEDIA)

N o t t o b e c o n f u s e d w i t h Memorization.

In computing, memoization or memoisation is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again.

�12

Page 13: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Silnia…Consider the following pseudocode function to calculate the factorial of n:

function factorial (n is a non-negative integer) if n is 0 then return 1 [by the convention that 0! = 1] else return factorial(n – 1) times n [recursively invoke factorial with the parameter 1 less than n] end ifend function

�13

Page 14: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Silnia…

Depending on the machine, this cost might be the sum of:

1. The cost to set up the functional call stack frame.2. The cost to compare n to 0.3. The cost to subtract 1 from n.4. The cost to set up the recursive call stack frame. (As

above.)5. The cost to multiply the result of the recursive call to factorial by n.

6. The cost to store the return result so that it may be used by the calling context.

�14

Page 15: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Silnia…A memoized version of the factorial function follows:

function factorial (n is a non-negative integer) if n is 0 then return 1 [by the convention that 0! = 1] else if n is in lookup-table then return lookup-table-value-for-n else let x = factorial(n – 1) times n [recursively invoke factorial with the parameter 1 less than n] store x in lookup-table in the nth slot [remember the result of n! for later] return x end ifend function

�15

Page 16: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

POWRÓTDOMACIERZYMnożeniemacierzy

�16

Page 17: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

A1A2A3A4A5

�17�17

Page 18: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

A1A2A3A4A5

�18

Page 19: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

A1A2A3A4A5

�19

m(i,j)=0jeślii=j=min[m(i,k)+m(k+1,j)+pipk+1pj+1]jeślii<j (*)

Page 20: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Pseudokod…

MATRIX-CHAIN-ORDER(p)1 n ← length[p] - 12 for i ← 1 to n3 do m[i, i] ← 04 for l ← 2 to n ▹l is the chain length.5 do for i ← 1 to n - l + 16 do j ← i + l - 17 m[i, j] ← ∞8 for k ← i to j - 19 do q ← m[i, k] + m[k + 1, j] + pi-1 pkpj10 if q < m[i, j]11 then m[i, j] ← q12 s[i, j] ← k13 return m and sMATRIX-CHAIN-ORDERdeterminestheoptimalnumberofscalarmultiplicationsneededtocomputeamatrix-chainproduct.

�20

Page 21: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

MATRIX-CHAIN-ORDER

Thealgorithmfirstcomputesm[i,i]=0fori=1,2,...,n(theminimumcostsforchainsoflength1)inlines2-3.Itthenusesrecurrence(*)tocomputem[i,i+1]fori=1,2,...,n-1(theminimumcostsforchainsoflengthl=2)duringthefirstexecutionoftheloopinlines4-12.Thesecondtimethroughtheloop,itcomputesm[i,i+2]fori=1,2,...,n-2(theminimumcostsforchainsoflengthl=3),andsoforth.Ateachstep,them[i,j]costcomputedinlines9-12dependsonlyontableentriesm[i,k]andm[k+1,j]alreadycomputed.

�21

Page 22: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Pseudokod…

PRINT-OPTIMAL-PARENS(s, i, j)1 if i = j2 then print "A"i3 else print "("4 PRINT-OPTIMAL-PARENS(s, i, s[i, j])5 PRINT-OPTIMAL-PARENS(s, s[i, j] + 1, j)6 print ")"

�22

Page 23: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Constructinganoptimalsolution

AlthoughMATRIX-CHAIN-ORDERdeterminestheoptimalnumberofscalarmultiplicationsneededtocomputeamatrix-chainproduct,itdoesnotdirectlyshowhowtomultiplythematrices.Itisnotdifficulttoconstructanoptimalsolutionfromthecomputedinformationstoredinthetables[1…n,1…n].Eachentrys[i,j]recordsthevalueofksuchthattheoptimalparenthesizationofAiAi+1…AjsplitstheproductbetweenAkandAk+1.Thus,weknowthatthefinalmatrixmultiplicationincomputingA1…AnoptimallyisA1…As[1,n]As[1,n]+1…An.Theearliermatrixmultiplicationscanbecomputedrecursively,sinces[1,s[1,n]]determinesthelastmatrixmultiplicationincomputingA1‥As[1,n],ands[s[1,n]+1,n]determinesthelastmatrixmultiplicationincomputingAs[1,n]+1‥An.Thefollowingrecursiveprocedureprintsanoptimalparenthesizationof〈Ai,Ai+1,...,Aj〉,giventhestablecomputedbyMATRIX-CHAIN-ORDERandtheindicesiandj.TheinitialcallPRINT-OPTIMAL-PARENS(s,1,n)printsanoptimalparenthesizationof〈A1,A2,...,An.

�23

Page 24: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

PROGRAMOWANIEDYNAMICZNE(PDLUBDP)

Mnożeniemacierzy

�24

Page 25: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Zadania(Cormen,…,15.2.1,15.2.2)

• Znaleźćoptymalnąkolejnośćmnożeniaciągumacierzy,którychwymiarytworząsekwencję〈5,10,3,12,5,50,6〉.

• PodaćrekurencyjnyalgorytmMATRIX-CHAIN-MULTIPLY(A,s,i,j),wykonującyoptymalnemnożenieciągumacierzyA1,A2,...,An mając tablicę s otrzymaną w algorytmie MATRIX-CHAIN-ORDER i indeksy i, j. (Wywołanie początkowe: MATRIX-CHAIN-MULTIPLY(A, s, 1, n))

�25

Page 26: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

OBLICZENIA-TYPYObliczeniarównoległe

�26

Page 27: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

OBLICZENIARÓWNOLEGŁE

�27

Page 28: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Podział• Przetwarzanie

– KomputerVonNeumanna RAM<-->CPU<-->I/O

– Potokowe,wektorowe RAM+wieleinstrukcjijednocześnie<-->CPU<-->I/O

– Równoległe RAM+wielezadań<-->wielePU<-->I/O

• Architekturakomputerów

• Zadaniowość

�28

JohnvonNeumann(~1940;LANLarch.)

Page 29: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Podziałzewzgl.nazadania

• SISD• SIMD• MISD• MIMD

S=single,I=instruction(s),M=multi,D=data(rysunki:https://computing.llnl.gov/tutorials/parallel_comp/#Abstract)

�29

Page 30: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

SISD

�30

Page 31: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

SIMD

�31

Page 32: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

MISD

�32

Page 33: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

MIMD

�33

Page 34: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Podziałzewzgl.napamięć

• Wieleprocesorów– Pamięćwspółdzielona,dzielona,wspólna(shared) (openMP)– Pamięćrozproszona,prywatna

(MessagePassingInterface=MPI) –Mieszaninapowyższych

�34

Page 35: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Wspólnapamięć(UMA)

�35

UMA-Uniformmemoryarchitecture

Page 36: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Pamięćdzielona(NUMA)

�36

NUMA-Nonuniformmemoryarchitecture

Page 37: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Pamięćrozproszona

�37

Distributedmemoryarchitecture

Page 38: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

PrawoAmdahl’a

�38

1przyspieszenieobliczeńS=—————1-r

r=ułamekprogramu,którymożnaurównoleglić

-Jeśliprogramniemożebyćrównoległytor=0iS=1

-Jeślicałyprogramjestrównoległytor=1iS=∞

- Jeśli50%programudasieurównoleglićtor=0.5,aS=2

- Jeśliliczbaprocesorówwynosipto1

S=————-r/p+s

gdziesjestułamkiemprocesówsekwencyjnych

Page 39: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

PrawoAmdahl’a

• PrzyspieszenieobliczeńrównoległychSp=liczbaprocesoróws=ułamekprocesówsekwencyjnych r=ułamekprocesówrównoległych

S = tsekw/trów = (s + r)/[s + r/p] = 1/[s + (1 - s)/p] --> 1/s, p --> ∞

• Wydajność(efficiency)procesoraP.E.=S/p.P.E. = 1/[p s + (1 - s)]

�39

Page 40: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

PrawoAmdahl’a

�40

przyspieszenie S ------------------------------------- p r = .50 r = .90 r = .95 r = .99 ----- ------- ------- ------- ------- 10 1.82 5.26 6.89 9.17 100 1.98 9.17 16.80 50.25 1,000 1.99 9.91 19.62 90.99 10,000 1.99 9.91 19.96 99.02100,000 1.99 9.99 19.99 99.90

Page 41: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

PrawoAmdahl’a-przyspieszenie

200 400 600 800 1000n

20

40

60

80

Ss=0.01

s=0.02

s=0.10

p -liczbaprocesorów

przyspieszenieS

�41

Page 42: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Paradygmatyprogramowaniarównoległego

• Macropipelining-potoki.Przykład.

FFTPracaIFFTzewspółczynnikamiFouriera

PU PUPUStrumień

zadań

�42

Page 43: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

dodawanie…

• Policzyća[i]=a[i]+a[(i-1MODn)+2],gdziei=1,…,n,a(i)=i.(Inaczej:Dodaćprzesuniętecyklicznieo1wlewoelementymacierzyadoa)

• 1.Wektorowo(f90)

Integer, parameter :: n=100Integer, dimension(n) :: a, aright Do i=1, n a(i) = iEnd Doaright = cshift(a, shift=-1, dim=1)a = a + aright ! Wektorowe dodawanie

�43

Page 44: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

dodawanie…

• 2.Równolegle(f90+MPI)

Integer, parameter :: n=100Integer :: VecElem, RVecElemInteger :: MyNode, RNode, LNodeMyNode = whoami() + 1 ! Numery procesów startują z 0VecElem = MyNodeRNode = Mod(MyNode+1,n)+1 ! Nie Rnode = MyNode+1LNode = Mod(MyNode-1+n,n)+1 ! Nie Lnode = MyNode-1Call SentAndGet(VecElem, Lnode, RVecElem, RNode)VecElem = VecElem + RVecElem…! Zbieranie wyników

�44

Page 45: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Zadania

• Zadanie.ZapisaćpoprzedniprogramwjęzykuClubC++.

• PodzielićpracęnadproblememIsingazHamiltonianem

H = K Σi,j si.sjKażdyspinsioddziałujezbezpośrednimisąsiadaminasieci2DoWwęzłachitopologii torusa,napprocesorów.Wykonaćodpowiednirysunek.

�45

Page 46: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

PRZYKŁADYAteraz

�46

Page 47: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Maszynywektorowe(potok)

a(i-1),b(i-1)

a(i+3),b(i+3)

a(i),b(i)

a(i+1),b(i+1)

a(i+2),b(i+2)

a(i+3),b(i+3)

JustujeformatDodajemantysyWyrównujepotęgiPorównujepotęgi

! fortranFor i=1 to N do c(i) = a(i) + b(i)End do

1.013x104->0.1013x103->1.013x1040.92x104+0.093x1040.92x104+0.93x103

POTOKDANYCH OPERACJA

CPU

PRZYKŁAD

�47

Page 48: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

program hello include 'mpif.h'

integer rank, size, ierror, tag, status(MPI_STATUS_SIZE) character(12) message call MPI_INIT(ierror)

call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)

tag = 100 if (rank .eq. 0) then

message = 'Hello, world'

do i=1, size-1 call MPI_SEND(message, 12, MPI_CHARACTER, i, tag, &

MPI_COMM_WORLD, ierror) enddo

else call MPI_RECV(message, 12, MPI_CHARACTER, 0, tag, &

MPI_COMM_WORLD, status, ierror)

endif print*, 'node', rank, ':', message

call MPI_FINALIZE(ierror)end program hello

Hello(MPI)

�48

Page 49: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Wyliczyćwartośćπ wedługformuły:

π =4

1+ x2dx

0

1

π-MPI

�49

Page 50: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Fortran,π -MPI—1

�50

Page 51: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Fortran,π -MPI—2

�51

Page 52: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Fortran,π -MPI—3

�52

Page 53: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Zadanie

• Napiszprogramobliczeńrównoległych„pi”(lubszkicprogramuwjęzykuludzkim),wykorzystującygeneratorliczblosowychonazwieRand().

• Obliczpi(równolegle),używającRand()ibiorącpoduwagęstosunekpólkwadratuoboku1iokręguopromieniu1.

Patrz:https://pl.wikipedia.org/wiki/Igła_Buffonahttp://mathworld.wolfram.com/BuffonsNeedleProblem.html

�53

Page 54: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

!Sekwencyjny(1proces)doj=1,ndoi=1,na(i,j)=FUNC(i,j)enddoenddoFUNCTIONFUNC(I,J)!Cośrobimyza(i,j)END

Macierze(MPI)

i,j

1 n1

n

�54

Page 55: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Równoległy(4procesy)doj=mystart,myenddoi=1,na(i,j)=FUNC(i,j)enddoenddoFUNCTIONFUNC(I,J)!Cośrobimyza(I,j)END

Macierze

mystart myend

�55

Page 56: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

SkurczowyalgorytmMD

• MD=moleculardynamics• Zespółn(>>1)oddziałującychczastek.SiłaFidziałanacząstkęi-tą.Równaniaruchu

d2ri(t)/dt2=Fi(R)/mi,gdzier,R,F–wektoryZnaleźćcharakterystykifizyczneukładu.(algorytmskurczowy-->systolicalgorithm)

�56

Page 57: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

SkurczowyalgorytmMD

lok

Lat

lok

Lat

lok

Lat

lok

Lat

lok

Lat…

Węzeł:1 2 3 P-1 p

lok=cząstkiprzydzielonedowęzłąLat=cząstki„wędrujące”p=liczbawęzłów

�57

Page 58: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

SkurczowyalgorytmMDROUTINENodeStepREPEATCalculateforcesonlocalpartsPerformleap-frogstepforlocalpartUNTILProgramstopsEndRoutineNodeStep

ROUTINECalculateforcesonlocalpartsCalculatecontributionsfromlocalpartsCopylocalparticlesfromrightneighbourandloadintotravelingparticlesDOK=1,p-1Sendtravelingparticlestotheleft(moduloPBC)ReceivedatafromrightneighbourandloadintotravelingparticlesCalculatecontributionstolocalforcesfromtravelingparticlesENDDOENDROUTINECalculateforcesonlocalparts

�58

Page 59: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Modelobliczeńtypumaster-slave

• Procesmaster–rozdzielazadania,rejestrujewynikipracyprocesówslave

• Zadaniawykonywaneprzezprocesyslavemogąbyćróżne(instrukcje

�59

Page 60: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Problemzfizykifazystałej

(MC=MonteCarlo)• Ztw.Blochawynika,żerównanieSchroedingeradlaposzczególnychwektorówBlochakwstrefieBrillouinamożnarozwiązaćniezależnie.JeśliznamyefektywnypotencjałelektronutomasternakazujeniewolnikomzdiagonalizowaćHamiltoniandlaróżnychwektorówk,którewcześniejjeotrzymały,niezależnie.Podiagonalizacjiniewolnikwysyławynikidomistrza,aten,naichpodstawieobliczanp.gęstośćładunku…Jeśliniewolnikówjestmniejniżwektorówk,toposkończeniuswoichobliczeńniewolnikdostajenowekidziaładalej.Poobliczeniuostatniegokmasterliczycopotrzeba.

�60

Page 61: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Literatura

-DesigningandBuildingParallelPrograms".IanFoster.http://www.mcs.anl.gov/~itf/dbpp/

-OverviewofRecentSupercomputers.A.J.vanderSteen,JackDongarra.OverviewRecentSupercomputers.2008.pdf

-MortenHjorth-Jensen.COMPUTATIONALPHYSICS.UniversityofOslo,Fall2008.(Internetedition)

�61

Page 62: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Problemy?

�62

Page 63: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

�63

Page 64: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

A2A3A4A5

A1A2A3A4A5

A1A2

A3A4

A1A2

A3

A1A2

A2A3

A4

A2A3

A3A4

A5

A3A4 A4A5

A1A2A3A4A5

�64

Page 65: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

�65

Page 66: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Przykład

• Inicjujemya[i]=i, i=1,…,N i wykonujemy dodawanie:

FOR i = 1 TO N DO a[i] = a[i] + a[((i − 1) MOD N) + 2];END DO

�66

Page 67: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Data-parallelmodel1 INTEGER, PARAMETER :: N=100 ! Declaration of ! array size2 INTEGER, DIMENSION(N) :: A, ARight ! Declare arrays3 DO I=1, N ! Initialise A4 A(I)=I5 END DO6 ARight=CSHIFT(A, SHIFT=-1, DIM = 1) ! Circular shift ! of A7 A = A + ARight ! Add A and ! ARight ! result stored ! in B

�67

Page 68: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Message-passingmodel1 INTEGER, PARAMETER :: N =100 ! Declaration of ! array size2 INTEGER :: VecElem, RVecElem ! Elements of ! the vector3 INTEGER :: MyNode, RightNode, & ! Variables to LeftNode ! contain node ! addresses4 MyNode = whoami() ! Determine node ! address5 VecElem = MyNode ! Initialise ! vector element6 RightNode = MOD(MyNode+1, N)+1 ! Address of ! right neighbour7 LeftNode = MOD(Mynode-1+N, N)+1 ! Address of left ! neighbour8 CALL send&get(VecElem, LeftNode, & ! Circular RVecElem, RightNode) ! left-shift9 VecElem = VecElem + RVecElem ! Calculate sum

�68

Page 69: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Dynamikamolekularna(MD)

• N>>1cząstekoddziałującychparami• Fi(R)=∑ij,j≠i F(|ri-rj|)nij;n-wektorjednostkowy• Równaniaruchu:d2ri(t)/dt2=Fi(R)/mi

• Procedura:• inicjuj• rozpocznijsymulację;dorównowagi• kontynuuj.

�69

Page 70: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

AlgorytmVerleta

Całkowanierównańruchu:

r(t +h)=2r(t)−r(t −h)+h2F[r(t)]/m

r(h)=r(0)+hv(0)+(h2/2)F[r(t=0)](m ≡1),v(t)=[r(t +h)−r(t −h)]/2+O(h2)

�70

Page 71: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Prędkościowyalg.Verleta

(bardziejstabilnyalgorytmcałkowania)Definicja

v(t)=[r(t+h)−r(t−h)]/2pozwalaobliczaćjednocześnie

r(t+h)=r(t)+hv(t)+h2F(t)/2,v(t+h)=v(t)+h[F(t+h)+F(t)]/2.

�71

Page 72: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Siły

czasobliczaniasiłᯈ O(N2)

(npzpotencjałuLenarda-Jonesa)

�72

Page 73: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

MDparallel

�73

Cząstki Cząstki

Siły Siły

Układcząstek.SiłyLennarda–Jonesa.Dynamikawg.algorytmuVerleta

Page 74: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

ProstyalgorytmMD

�74

Send particles in slice to the right neighbour;Receive guest particles from left neighbour;FOR all particle pairs in present slice DO Calculate forces for particles in present slice due to particles in this slice and store their values;END FOR;FOR all particles in present slice DO FOR all particles received from left neighbour DO Calculate forces between ‘resident’ and ‘guest’ particle; Store force on resident particle in resident force array; Store force on ‘guest’ particle in a sending array END FOR;END FOR;Send forces on guest particles to left neighbour;Receive forces on resident particles from right neighbour;Add these last forces to total forces on resident particles;Move particles according to Verlet algorithm.

Page 75: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

Algorytmskurczowy(systolicalg.)

�75

travel

local

travel

local

travel

local

travel

local

travel

local

Algorytmsystoliczny(skurczowy)obliczaniasiłwukładziezoddziaływaniamiparcząstek

...

Page 76: Zaawansowane metody obliczeń numerycznychkft.umcs.lublin.pl/baran/epk/zmon/zmon.pdf… przykłady • Mnożenie macierzy A 1 A 2 … A n-1 A n • Numeryczne obliczanie pochodnych,

AlgorytmskurczowyROUTINE NodeStep REPEAT Calculate_forces_on_local_particles; Perform leap-frog step for local particles; UNTIL Program stops;END ROUTINE NodeStep;

ROUTINE Calculate_forces_on_local_particles Calculate contributions from local particles; Copy local particles to travelling particles; DO K = 1, P − 1 Send travelling particles to the left (modulo PBC); Receive data from right neighbour and load into memory used by travelling particles; Calculate contributions to local forces from travelling particles; END DOEND ROUTINE Calculate_forces_on_local_particles;

�76