Zaawansowane metody obliczeń numerycznych

Podobne dokumenty
Programowanie współbieżne... (12) Andrzej Baran 2010/11

Programowanie współbieżne... (6)

Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie współbieżne... (4) Andrzej Baran 2010/11

16. Taksonomia Flynn'a.

Programowanie współbieżne... (2)

Nowoczesne technologie przetwarzania informacji

Programowanie współbieżne WYKŁADY - CZ. 5EX. PRZYKŁAD. LICZBY PIERWSZE. Andrzej Baran

Numeryczne zagadnienie własne

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Macierzowe algorytmy równoległe

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Helena Boguta, klasa 8W, rok szkolny 2018/2019

Miary Wydajności. Efektywność programu równoległego (E) jest definiowana jako stosunek przyśpieszenia do liczby procesorów

PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie współbieżne... (w14)

Wstęp. Przetwarzanie współbieżne, równoległe i rozproszone

Algorytmy numeryczne 1

TTIC 31210: Advanced Natural Language Processing. Kevin Gimpel Spring Lecture 9: Inference in Structured Prediction

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

Wykład 6. Wyszukiwanie wzorca w tekście

Programowanie współbieżne... (5)

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Arrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Weronika Mysliwiec, klasa 8W, rok szkolny 2018/2019

Wstęp. Przetwarzanie równoległe. Krzysztof Banaś Obliczenia równoległe 1

Algorytmy i Struktury Danych

Metody Obliczeniowe w Nauce i Technice

Obliczenia równoległe

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Nazwa projektu: Kreatywni i innowacyjni uczniowie konkurencyjni na rynku pracy

Podstawy Informatyki Systemy sterowane przepływem argumentów

Revenue Maximization. Sept. 25, 2018

Machine Learning for Data Science (CS4786) Lecture 11. Spectral Embedding + Clustering

OpenPoland.net API Documentation

Aktualizacja Oprogramowania Firmowego (Fleszowanie) Microprocessor Firmware Upgrade (Firmware downloading)

Algorytmy Równoległe i Rozproszone Część IV - Model PRAM

Laboratorium Programowania Kart Elektronicznych

Architektura mikroprocesorów TEO 2009/2010

ARNOLD. EDUKACJA KULTURYSTY (POLSKA WERSJA JEZYKOWA) BY DOUGLAS KENT HALL

Operacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1

Równoległość i współbieżność

Równoległość i współbieżność

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1

Równoległe symulacje Monte Carlo na współdzielonej sieci

TTIC 31210: Advanced Natural Language Processing. Kevin Gimpel Spring Lecture 8: Structured PredicCon 2

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface. Wprowadzenie do systemów wieloprocesorowych

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Wstęp do programowania

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Zaawansowane metody programowania. Algorytmy

SQL 4 Structured Query Lenguage

Programowanie współbieżne... (1) Andrzej Baran 2010/11

Laboratorium Programowania Kart Elektronicznych

y = The Chain Rule Show all work. No calculator unless otherwise stated. If asked to Explain your answer, write in complete sentences.

SSW1.1, HFW Fry #20, Zeno #25 Benchmark: Qtr.1. Fry #65, Zeno #67. like

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Wstęp do programowania

Jak zasada Pareto może pomóc Ci w nauce języków obcych?

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

Strategic planning. Jolanta Żyśko University of Physical Education in Warsaw

Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną.

2017 R. Robert Gajewski: Mathcad Prime 4. Solution of examples Rozwiązania przykładów

Proposal of thesis topic for mgr in. (MSE) programme in Telecommunications and Computer Science

Pobieranie argumentów wiersza polecenia

Wstęp do programowania

Rachunek lambda, zima

Operacje grupowego przesyłania komunikatów

EGZAMIN MATURALNY OD ROKU SZKOLNEGO

Karpacz, plan miasta 1:10 000: Panorama Karkonoszy, mapa szlakow turystycznych (Polish Edition)

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

dr inż. Jarosław Forenc

Życie za granicą Studia

Szybka transformacja Fouriera (FFT Fast Fourier Transform)

Programowanie współbieżne i rozproszone

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

Całkowanie numeryczne

Podstawowe I/O Liczby

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

Podstawy programowania funkcjonalnego

X11R5. .Xresources. Pliki konfiguracyjne X-Windows. Zasada działania X11. .xinitrc. X protocol X server. X client. X library

Programowanie Równoległe Wykład 5. MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej


w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

Technologie informacyjne Wykład VII-IX

Numeryczna algebra liniowa. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Programowanie Równoległe Wykład 5. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

Gradient Coding using the Stochastic Block Model

DUAL SIMILARITY OF VOLTAGE TO CURRENT AND CURRENT TO VOLTAGE TRANSFER FUNCTION OF HYBRID ACTIVE TWO- PORTS WITH CONVERSION

Metoda elementów brzegowych

Transkrypt:

Zaawansowane metody obliczeń numerycznych 1

Zaawansowane? Algorytmy (skuteczniejsze) Dokładność obliczeń! Szybkość obliczeń Obliczenia równoległe Paradygmaty programowania Języki programowania Biblioteki Narzędzia programisty Elementy teorii obliczeń 2

przykłady Mnożenie macierzy A 1 A 2 A n- 1 A n Numeryczne obliczanie pochodnych, całek. Metoda Richardsona. Obliczanie pi na p procesorach. Fortran, java, prolog, haskel, Typy definiowane, parametryzowane BLAS, Lapack, BLACS, MKL, itd. make, gawk, sed, emacs Problem stopu. Maszyna Turinga. Rozstrzygalność. 3

Pseudokod mnożenia C <- A B Koszt mnożenia 2 macierzy. (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] 0 6 for k 1 to columns[a] 7 do C[i, j] C[i, j] + A[i, k] B[k, j] 8 return C KOSZT: ~ pqr 4

A 1 (300,10)A 2 (10,300)A 3 (300,10) [A 1 (300, 10) x A 2 (10, 300)] x A 3 (300, 10) => 300*10*300 + 300*300*10 = 1 800 000 A 1 (300, 10) x [A 2 (10, 300) x A 3 (300, 10)] 10*300*10 + 300*10*10 = 600 1800000/600 = 3000 razy! 5

A 1 A 2 A 3 A 4 A 5 6

A 1 A 2 A 3 A 4 A 5 7

A 1 A 2 A 3 A 4 A 5 (*) 8

Pseudokod MATRIX- CHAIN- ORDER(p) 1 n length[p] - 1 2 for i 1 to n 3 do m[i, i] 0 4 for l 2 to n l is the chain length. 5 do for i 1 to n - l + 1 6 do j i + l - 1 7 m[i, j] 8 for k i to j - 1 9 do q m[i, k] + m[k + 1, j] + pi-1 pkpj 10 if q < m[i, j] 11 then m[i, j] q 12 s[i, j] k 13 return m and s MATRIX- CHAIN- ORDER determines the opomal number of scalar muloplicaoons needed to compute a matrix- chain product. 9

MATRIX- CHAIN- ORDER The algorithm first computes m[i, i] 0 for i = 1, 2,..., n (the minimum costs for chains of length 1) in lines 2-3. It then uses recurrence (*) to compute m[i, i +1] for i = 1, 2,..., n - 1 (the minimum costs for chains of length l = 2) during the first execuoon of the loop in lines 4-12. The second ome through the loop, it computes m[i, i + 2] for i = 1, 2,..., n - 2 (the minimum costs for chains of length l = 3), and so forth. At each step, the m[i, j] cost computed in lines 9-12 depends only on table entries m[i, k] and m[k + 1, j] already computed. 10

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

Construcong an opomal soluoon Although MATRIX- CHAIN- ORDER determines the opomal number of scalar muloplicaoons needed to compute a matrix- chain product, it does not directly show how to muloply the matrices. It is not difficult to construct an opomal soluoon from the computed informaoon stored in the table s[1 n, 1 n]. Each entry s[i, j] records the value of k such that the opomal parenthesizaoon of Ai Ai+1 Aj splits the product between Ak and Ak+1. Thus, we know that the final matrix muloplicaoon in compuong A1 n opomally is A1 s[1,n] As[1,n]+1 n. The earlier matrix muloplicaoons can be computed recursively, since s[1, s[1, n]] determines the last matrix muloplicaoon in compuong A1 s[1,n], and s[s[1, n] + 1, n] determines the last matrix muloplicaoon in compuong As[1,n]+1 n. The following recursive procedure prints an opomal parenthesizaoon of Ai, Ai+1,..., Aj, given the s table computed by MATRIX- CHAIN- ORDER and the indices i and j. The inioal call PRINTOPTIMAL- PARENS(s, 1, n) prints an opomal parenthesizaoon of A1, A2,..., An. 12

Zadania (Cormen,,15.2.1, 15.2.2) Find an opomal parenthesizaoon of a matrix- chain product whose sequence of dimensions is 5, 10, 3, 12, 5, 50, 6. Give a recursive algorithm MATRIX- CHAIN- MULTIPLY(A, s, i, j) that actuallyperforms the opomal matrix- chain muloplicaoon, given the sequence of matrices A1, A2,..., An, the s table computed by MATRIX- CHAIN- ORDER, and theindices i and j. (The inioal call would be MATRIX- CHAIN- MULTIPLY(A, s, 1, n).) 13

Podział Przetwarzanie Komputer Von Neumanna RAM < - - > CPU < - - > I/O Potokowe, wektorowe RAM + wiele instrukcji jednocześnie < - - > CPU < - - > I/O Równoległe RAM + wiele zadań < - - > wiele PU < - - > I/O Architektura komputerów Zadaniowość 14

OBLICZENIA RÓWNOLEGŁE 15

Zadania SISD SIMD MISD MIMD S = single, I = instrucoon(s), M = mulo, D = data (rysunki: h ps://compuong.llnl.gov/tutorials/parallel_comp/#abstract) 16

SISD 17

SIMD 18

MISD 19

MIMD 20

Pamięć Wiele procesorów Pamięć współdzielona, dzielona, wspólna (shared) (openmp) Pamięć rozproszona, prywatna (Message Passing Interface = MPI) Mieszanina powyższych 21

Prawo Amdahl a Przyspieszenie obliczeń równoległych S (p = liczba procesorów, s = ułamek procesów sekwencyjnych, r = ułamek procesów równoległych) S = t seq /t par = (s + r)/[s + r/p] = 1/[s + (1 - s)/p] - - - - > 1/s, p - - > nsk. Wydajność (efficiency) procesora P.E. = S/p. P.E. = 1/[p s + (1 - s)] 22

Prawo Amdahl a - przyspieszenie S s = 0.01 przyspieszenie 80 60 40 s = 0.02 20 200 400 600 800 1000 n s = 0.10 liczba PU 23

Paradygmaty programowania równoległego Macro pipelining. Przykład. Strumień zadań PU PU PU FFT Praca IFFT ze współczynnikami Fouriera 24

dodawanie Policzyć a[i] = a[i] + a[(i- 1 MOD n) + 2], gdzie i=1,,n, a(i) =i. (Inaczej: Dodać przesunięte cyklicznie o 1 w lewo elementy macierzy a do a) 1. Wektorowo (f90) Integer, parameter :: n=100 Integer, dimension(n) :: a, aright Do i=1, n a(i) = i End Do aright = cshift(a, shift=-1, dim=1) a = a + aright! Wektorowe dodawanie 25

dodawanie 2. Równolegle (f90 + ~mpi). (Można inaczej) Integer, parameter :: n=100 Integer :: VecElem, RVecElem Integer :: MyNode, RNode, LNode MyNode = whoami() + 1! Numery procesów startują z 0 VecElem = MyNode RNode = Mod(MyNode+1,n)+1! Nie: Rnode = MyNode+1 LNode = Mod(MyNode-1+n,n)+1! Nie: Lnode = MyNode-1 Call SentAndGet(VecElem, Lnode, RVecElem, RNode) VecElem = VecElem + RVecElem! Zbieranie wyników 26

Zadania Zadanie. Zapisać poprzedni program w języku C lub C++. Podzielić pracę nad problemem Isinga z Hamiltonianem H = K Σ i,j s i.s j. Każdy spin s i oddziałuje z bezpośrednimi sąsiadami) na sieci 2D o W węzłach i topologii torusa, na p procesorów? Wykonać odpowiedni rysunek. 27

A teraz PRZYKŁADY 28

Maszyny wektorowe (pipelining) a(i- 1), b(i- 1) CPU a(i), b(i) a(i+1), b(i+1) a(i+2), b(i+2) a(i+3), b(i+3) a(i+3), b(i+3) POTOK DANYCH Justuje format Dodaje mantysy Wyrównuje potęgi Porównuje potęgi OPERACJA 1.013 x 10 4 - > 0.1013 x 10 3 - > 1.013 x 10 4 0.92 x 10 3 + 0.093 x 10 4 0.92 x 10 4 + 0.93 x 10 3 PRZYKŁAD For i=1 to N do c(i) = a(i) + b(i) End do 29

Hello (MPI) 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 30

π (MPI) Wyliczyć wartość π według formuły: π = 1 0 π 4 1+ x 2 dx 31

32

33

34

Zadanie Napisz program obliczeń równoległych pi (lub szkic programu w języku ludzkim), wykorzystując generator liczb losowych o nazwie Rand(). Oblicz pi (równolegle),używając Rand() i biorąc pod uwagę stosunek pól kwadratu o boku 1 i okręgu o promieniu 1. Patrz: h ps://pl.wikipedia.org/wiki/igła_buffona h p://mathworld.wolfram.com/buffonsneedleproblem.html 35

Macierze (MPI) 1 n 1 n i,j! Sekwencyjny (1 proces) do j = 1, n do i = 1,n a(i,j) = FUNC(i,j) end do end do FUNCTION FUNC(I,J)! Coś robimy z a(i,j) END 36

Macierze mystart myend! Równoległy (4 procesy) do j = mystart, myend do i = 1,n a(i,j) = FUNC(i,j) end do end do FUNCTION FUNC(I,J)! Coś robimy z a(i,j) END 37

Skurczowy algorytm MD MD = molecular dynamics Zespół n (>>1) oddziałujących czastek. Siła F i działa na cząstkę i- tą. Równania ruchu d 2 r i (t)/dt 2 = F i (R)/m i, gdzie r, R, F wektory Znaleźć charakterystyki fizyczne układu. (algorytm skurczowy - - > systolic algorithm) 38

Skurczowy algorytm MD Lat Lat Lat Lat Lat lok lok lok lok lok Węzeł: 1 2 3 P- 1 p lok = cząstki przydzielone do węzłą Lat = cząstki wędrujące p = liczba węzłów 39

Skurczowy algorytm MD ROUTINE NodeStep REPEAT Calculate forces on local parts Perform leap- frog step for local part UNTIL Program stops End Rouone NodeStep ROUTINE Calculate forces on local parts Calculate contribuoons from local parts Copy local parocles from right neighbour and load into traveling parocles DO K=1, p- 1 Send traveling parocles to the leš (modulo PBC) Receive data from right neighbour and load into traveling parocles Calculate contribuoons to local forces from traveling parocles END DO END ROUTINE Calculate forces on local parts 40

Model obliczeń typu master- slave Proces master rozdziela zadania, rejestruje wyniki pracy procesów slave Zadania wykonywane przez procesy slave mogą być różne (instrukcje 41

PROGRAM MASTER_WORKER USE MPI C PARAMETER (NJOBMX=10) INTEGER istatus(mpi_status_size) C CALL MPI_INIT(ierr) CALL MPI_COMM_SIZE(MPI_COMM_WORLD,nprocs,ierr) CALL MPI_COMM_RANK(MPI_COMM_WORLD,myrank,ierr) C IF (myrank.eq.0) THEN C C======= MASTER PART C THE MASTER RECIVES THE MASAGES FROM WORKERS AND IF SOME WORKER C IS IDLE IT SENDS TO IT A JOB NUMBER. THE WORKER REALIZES THIS C JOB AND SENDS THE MASSAGE AGAIN TO THE MASTER. IF ALL JOBS ARE C PROCESSED THEN IF THE WORKER HAS FINISHED THE MASTER SENDS THE C TERM SIGNAL (JOB=-1) TO THE WORKER AND THE WORKER EXITS. C (SEE: WORKER.F) C itag=1 C DO job=1,njobmx CALL MPI_RECV(iwk, 1, MPI_INTEGER, MPI_ANY_SOURCE, & itag, MPI_COMM_WORLD, istatus, ierr) idest=istatus(mpi_source) CALL MPI_SEND(job, 1, MPI_INTEGER, idest, & itag, MPI_COMM_WORLD, ierr) END DO C C.. FINISH.. DO i=1,nprocs-1 CALL MPI_RECV(iwk, 1, MPI_INTEGER, MPI_ANY_SOURCE, & itag, MPI_COMM_WORLD, istatus, ierr) idest=istatus(mpi_source) CALL MPI_SEND(-1, 1, MPI_INTEGER, idest, & itag, MPI_COMM_WORLD, ierr) END DO C ELSE C C======= WORKER PART C THE WORKER SENDS THE SIGNAL TO THE MASTER MEANING IT IS IDLE. C IF THERE ARE JOBS TO PROCESS THEN THE MASTER SENDS TO THE c WORKER THE JOB NUMBER (NJOB) AND THE WORKER PROCESSES THE JOB. C IF THERE ARE NO OTHER JOBS THE NUMBER NJOB SENT TO THE WORKER C IS EQUAL TO -1 AND AFTER RECIVING IT THE WORKER EXITS. C itag=1 iwk=0 C DO CALL MPI_SEND(iwk, 1, MPI_INTEGER, 0, & itag, MPI_COMM_WORLD, ierr)

C C C C C C C & CALL MPI_RECV(job, 1, MPI_INTEGER, 0, itag, MPI_COMM_WORLD, istatus, ierr) IF (job.eq. -1) EXIT CALL WORK(job) END DO END IF CALL MPI_FINALIZE(ierr) END SUBROUTINE WORK(JOB) Here one calculates everything for JOB RETURN END

Problem z fizyki fazy stałej (MC = Monte Carlo) Z tw. Blocha wynika, że równanie Schroedingera dla poszczególnych wektorów Blocha k w strefie Brillouina można rozwiązać niezależnie. Jeśli znamy efektywny potencjał elektronu to master nakazuje niewolnikom zdiagonalizować Hamiltonian dla różnych wektorów k, które wcześniej je otrzymały, niezależnie. Po diagonalizacji niewolnik wysyła wyniki do mistrza, a ten, na ich podstawie oblicza np. gęstość ładunku Jeśli niewolników jest mniej niż wektorów k, to po skończeniu swoich obliczeń niewolnik dostaje nowe k i działa dalej. Po obliczeniu ostatniego k master liczy co potrzeba. 42

Literatura - Designing and Building Parallel Programs". Ian Foster. h p://www.mcs.anl.gov/~iœ/dbpp/ - Overview of Recent Supercomputers. A.J. van der Steen, Jack Dongarra. OverviewRecentSupercomputers.2008.pdf - Morten Hjorth- Jensen. COMPUTATIONAL PHYSICS. University of Oslo, Fall 2008. (Internet edioon) 43

Problemy? 44