Równoległy algorytm metody Jacobiego rozwiązywania zagadanienia brzegowego dla eliptycznych równań różniczkowych cząstkowych.

Slides:



Advertisements
Podobne prezentacje
PRAM.
Advertisements

STRUKTURY DANYCH.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas. 2 Wzorce Często pojawia się konieczność pisania podobnych funkcji lub klas operujących na argumentach.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne.
Równania różniczkowe cząstkowe
Obliczenia równoległe
Zadanie z dekompozycji
Wykład no 11.
ZŁOŻONOŚĆ OBLICZENIOWA
Imperatywne modele obliczeń Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Reguła pojedynczej nieregularności siatki: Element skończony może zostać złamany tylko raz bez konieczności złamania sąsiadującego dużego elementu. REGUŁY.
ZŁOŻONOŚĆ ALGORYTMÓW RÓWNOLEGŁYCH
Obliczanie miar ortogonalnych.
Obliczanie miar biegunowych.
Kartowanie pikiet pomierzonych metodą biegunową.
pomierzonych metodą ortogonalną
Instytut Fizyki Teoretycznej
Komunikacja zbiorowa: część II
Topologie wirtualne Topologia wirtualna: zadany schemat połączeń pomiędzy procesorami; inaczej mówiąc schemat ich wzajemnego sąsiedztwa. W MPI można określić.
#include #include main () { cout
Metoda różnic skończonych I
Współczynnik przyspieszenia n - wielkość zadania p - liczba procesorów T(n,p) – czas wykonania.
Definiowanie typów danych użytkownika
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
INSTRUKCJE Umożliwiają zapis algorytmu, służą do sterowania przebiegiem programu. warunkowe (podejmowanie decyzji) 1. if-else „jeżeli”, 2. switch-case.
Użytkowanie i programowanie Matlaba
Ogólna struktura programu w TP
Opracowali: Patryk Klemczak Tomasz Klemczak ODSIECZ WIEDEŃSKA.
Kształtowanie się granic II Rzeczypospolitej
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
1 An Introduction to MPI Parallel Programming with the Message Passing Interface William Gropp Ewing Lusk Argonne National Laboratory Wprowdzenie do MPI.
Wykład 4: Systemy nawigacji satelitarnej
WNIOSEK O PRZYZNANIE POMOCY
POGŁĘBIONA OCENA SYTUACJI FINANSOWEJ NA PODSTAWIE ANALIZY WSKAŹNIKOWEJ
Identyfikacja dansylowanych aminokwasów metodą cienkowarstwowej chromatografii na płytkach poliamidowych Gawahir Hassan.
Mechanika kwantowa dla niefizyków
Program Rozwoju Obszarów Wiejskich
Wybrane bloki i magistrale komputerów osobistych (PC)
Krakowskie Sympozjum Naukowo-Techniczne
Mechanika kwantowa dla niefizyków
Projekt z dnia 30 maja 2017 r. Ustawa z dnia …. ……………
Prof. dr hab. Roman Sobiecki Rachunki makroekonomiczne
Prezentacje wykonali: Marcin Łukasik Wiktor Kołek
GOSPODAROWANIE ZASOBAMI W ORGANIZACJI
Co to jest SSC Master… SSC Master to platforma elektronicznego obiegu, dekretacji i akceptacji dokumentów w organizacji. Dzięki szerokiemu i elastycznemu.
Chemia biopierwiastków
Sedymentacja.
Współczesne kierunki polityki społecznej
Hiszpania,Portugalia,Litwa,Polska,Turcja,Włochy,Chorwacja Desery.
Sprawozdanie roczne z realizacji Planu działania Krajowej Sieci Obszarów Wiejskich na lata za rok 2016 Warszawa, 26 czerwca 2017 r. Materiał.
Srebrna Małopolska regionalne inicjatywy na rzecz seniorów
Stan Wojenny.
O UTWORZENIE ZWIĄZKU METROPOLITALNEGO W WOJEWÓDZTWIE ŚLĄSKIM
Wojewódzki Inspektorat Ochrony Środowiska w Białymstoku
Wykład 8: Złożone problemy przetwarzania mobilnego
Realizacja sprzężenia od siły w układzie sterowania robotem do zastosowań neurochirurgicznych Dorota Marszalik Wieliczka,
Ruch turystyczny w Krakowie w 2015 roku
Zagadnienie prawdy Andrzej Łukasik Zakład Ontologii i Teorii Poznania
Potencjał chemiczny Potencjał chemiczny ma charakter siły uogólnionej,
STAŁE RÓWNOWAGI REAKCJI PROTOLITYCZNYCH
Optymalizacja sieci drogowej propozycja algorytmu
W ramach stypendium Ministerstwa Kultury i Dziedzictwa Narodowego
R- Punkt referencyjny (wyjściowy) obrabiarki
Materiały pochodzą z Platformy Edukacyjnej Portalu
Moje dziecko i jego potrzeby.
Wykład 7 Prawo urzędnicze.
Wsparcie dla przedsiębiorców oferowane przez Powiatowy Urząd Pracy
Bezpieczeństwo gospodarcze strefy Schengen – walka z korupcją, doskonalenie wiedzy i działań Policji Mazowsza sierż. szt. mgr Bartosz Alot LK KWP zs.
Zapis prezentacji:

Równoległy algorytm metody Jacobiego rozwiązywania zagadanienia brzegowego dla eliptycznych równań różniczkowych cząstkowych

Sformułowanie problemu

Dyskretyzacja zagadnienia

Rozwiązanie numeryczne metodą iteracji Jacobiego

Kod szeregowy iteracji Jacobiego !Main Loop DO WHILE(.NOT.converged) ! perform 4 point stencil DO j=1, n DO i=1, n B(i,j)=0.25*(A(i-1,j)+A(i+1,j)+A(i,j-1)+A(i,j+1)-& H*H*F(I,J)) END DO ! copy result back into array A A(i,j) = B(i,j) ... ! convergence test omitted

Przykładowy podział punktów siatki pomiędzy procesory dla 9 warstw i 3 procesorów

Projektowanie komunikacji Do obliczenia elementów tablicy u leżących na granicy podziału, procesor o 1 będzie potrzebował elementów u z pierwszego rzędu przypisanego procesorowi 2 oraz ostatniego rzędu przypisanego procesorowi 0.Podobnie, procesory 0 i 2 będą potrzebowały od procesora 1 elementów z odpowiednio pierwszego i ostatniego rzędu jemu przypisanych.

Kod iteracji Jacobiego dla warstwy punktów siatki przypisanej danemu procesorowi c Perform a Jacobi sweep for a 1-d decomposition. c Sweep from a into b subroutine sweep1d( a, f, nx, s, e, b ) integer nx, s, e double precision a(0:nx+1,s-1:e+1), f(0:nx+1,s-1:e+1), + b(0:nx+1,s-1:e+1) integer i, j double precision h h = 1.0d0 / dble(nx+1) do 10 j=s, e do 10 i=1, nx b(i,j) = 0.25 * (a(i-1,j)+a(i,j+1)+a(i,j-1) + a(i+1,j) - h * h * f(i,j) ) 10 continue return end

Wariant bardzo nieoptymalny (blokujące SEND i RECEIVE) subroutine exchng1( a, nx, s, e, comm1d, nbrbottom, nbrtop ) include 'mpif.h' integer nx, s, e double precision a(0:nx+1,s-1:e+1) integer comm1d, nbrbottom, nbrtop integer status(MPI_STATUS_SIZE), ierr C call MPI_SEND( a(1,e), nx, MPI_DOUBLE_PRECISION, * nbrtop, 0, comm1d, ierr ) call MPI_RECV( a(1,s-1), nx, MPI_DOUBLE_PRECISION, * nbrbottom, 0, comm1d, status, ierr ) call MPI_SEND( a(1,s), nx, MPI_DOUBLE_PRECISION, * nbrbottom, 1, comm1d, ierr ) call MPI_RECV( a(1,e+1), nx, MPI_DOUBLE_PRECISION, * nbrtop, 1, comm1d, status, ierr ) return end

Czas oczekiwania przez poszczególne procesory na dane w przypadku zastosowania wariantu 1

Rozpoczynanie albo od SEND albo od RECEIVE w zależności od rzędu procesora subroutine exchng1( a, nx, s, e, comm1d, nbrbottom, nbrtop ) use mpi integer nx, s, e double precision a(0:nx+1,s-1:e+1) integer comm1d, nbrbottom, nbrtop, rank, coord integer status(MPI_STATUS_SIZE), ierr ! call MPI_COMM_RANK( comm1d, rank, ierr ) call MPI_CART_COORDS( comm1d, rank, 1, coord, ierr ) if (mod( coord, 2 ) .eq. 0) then call MPI_SEND( a(1,e), nx, MPI_DOUBLE_PRECISION, & nbrtop, 0, comm1d, ierr ) call MPI_RECV( a(1,s-1), nx, MPI_DOUBLE_PRECISION, & nbrbottom, 0, comm1d, status, ierr ) call MPI_SEND( a(1,s), nx, MPI_DOUBLE_PRECISION, & nbrbottom, 1, comm1d, ierr ) call MPI_RECV( a(1,e+1), nx, MPI_DOUBLE_PRECISION, & nbrtop, 1, comm1d, status, ierr ) else endif return end

Wykorzystanie procedury MPI_Sendrecv subroutine exchng1( a, nx, s, e, comm1d, nbrbottom, nbrtop ) include 'mpif.h' integer nx, s, e double precision a(0:nx+1,s-1:e+1) integer comm1d, nbrbottom, nbrtop integer status(MPI_STATUS_SIZE), ierr c call MPI_SENDRECV(a(1,e), nx, MPI_DOUBLE_PRECISION, nbrtop, 0, & a(1,s-1), nx, MPI_DOUBLE_PRECISION, nbrbottom, 0, comm1d, status, ierr ) call MPI_SENDRECV(a(1,s), nx, MPI_DOUBLE_PRECISION, nbrbottom, 1, & a(1,e+1), nx, MPI_DOUBLE_PRECISION, nbrtop, 1, comm1d, status, ierr ) return end

Używanie buforowanego SEND subroutine exchng1( a, nx, s, e, comm1d, nbrbottom, nbrtop ) use mpi integer nx, s, e double precision a(0:nx+1,s-1:e+1) integer comm1d, nbrbottom, nbrtop integer status(MPI_STATUS_SIZE), ierr call MPI_BSEND( a(1,e), nx, MPI_DOUBLE_PRECISION, nbrtop, 0, comm1d, ierr ) call MPI_RECV( a(1,s-1), nx, MPI_DOUBLE_PRECISION, nbrbottom, & 0, comm1d, status, ierr ) call MPI_BSEND( a(1,s), nx, MPI_DOUBLE_PRECISION, nbrbottom, & 1, comm1d, ierr ) call MPI_RECV( a(1,e+1), nx, MPI_DOUBLE_PRECISION, nbrtop, & 1, comm1d, status, ierr ) return end

Połączenie nieblokowanego SEND z WAITALL subroutine exchng1( a, nx, s, e, comm1d, nbrbottom, nbrtop ) include 'mpif.h' integer nx, s, e double precision a(0:nx+1,s-1:e+1) integer comm1d, nbrbottom, nbrtop integer status_array(MPI_STATUS_SIZE,4), ierr, req(4) C call MPI_IRECV (a(1,s-1), nx, MPI_DOUBLE_PRECISION, nbrbottom, 0, * comm1d, req(1), ierr ) call MPI_IRECV (a(1,e+1), nx, MPI_DOUBLE_PRECISION, nbrtop, 1, * comm1d, req(2), ierr ) call MPI_ISEND (a(1,e), nx, MPI_DOUBLE_PRECISION, nbrtop, 0, * comm1d, req(3), ierr ) call MPI_ISEND (a(1,s), nx, MPI_DOUBLE_PRECISION, nbrbottom, 1, * comm1d, req(4), ierr ) call MPI_WAITALL ( 4, req, status_array, ierr ) return end

Program główny: definiowanie topologii w celu podziału procesorów pomiędzy poszczególne warstwy siatki. Źródło programu

Porównanie czasów wykonania równoległego kodu iteracji Jacobiego dla zagadnienia Poissona dla różnych wariantów komunikacji P Blokujące send Uporządkowane send sendrecv Buforowane send Nieblokujące send 1 5.38 5.54 5.40 2 2.77 2.88 2.91 2.75 4 1.58 1.56 1.57 1.50 1.51 8 1.15 0.947 0.931 0.854 0.849 16 1.18 0.574 0.534 0.521 0.545 32 1.94 0.443 0.451 0.452 0.397 64 3.73 0.447 0.391 0.362