Programowanie Równoległe i Rozproszone

III rok Informatyka WSZiB


Część 3 - Pomiar przyspieszenia aplikacji równoległej i równoważenie obciążenia

  • Zadanie1: Zmierzyć przyspieszenie aplikacji równoległej life parlife.c

    1. Umieścić w kodzie, na początku i na końcu programu, wywołania funkcji MPI_Wtime. Funkcja ta zwraca ilość sekund, które upłynęły od pewnego momentu w przeszłości. Przykład:
      { 
         double starttime, endtime; 
         starttime = MPI_Wtime(); 
          ....  obliczenia do zmierzenia  ... 
         endtime   = MPI_Wtime(); 
         printf("Obliczenia zajely %f sekund\n",endtime-starttime); 
      } 
      
      Za czas wykonania aplikacji przyjąć czas wykonania procesu najdluzej trwajacego.

    2. Przeprowadzić pomiary dla stałych parametrów wejściowych "4000 0.5 20" na 2, 4 i 6-ciu maszynach (jeden proces na jedną maszynę)
    3. Uruchomić aplikację sekwencyjną z tymi samymi parametrami i również zmierzyć czas wykonania slife.c. Można do tego użyć MPI_Wtime() umieszczając wcześniej MPI_Init() oraz MPI_Finalize() i plik nagłówkowy "mpi.h"
    4. Określić przyspieszenie wg. wzoru:
             T(1)
      S_j = ------
             T(j)
      
      gdzie T(1) jest czasem wykonania programu sekwencyjnego, zaś T(j) czasem wykonania programu na "j" procesorach.

      Rezultaty przedstawić w postaci wykresu (gnuplot) gdzie na osi "x" jest ilość użytych procesorów a na "y" przyspieszenie.

      Zespół A: w środowisku homogenicznym
      Zespół B: w środowisku heterogenicznym
    5. Ocenic uzyskane przyspieszenie majac na uwadze prawo Amdahla

    6. 
                             1  
          speedup   =   ------------ 
                          P   
                         --- +  S
                          N
      

      gdzie P = część równoległa programu, N = ilość procesorów and S = część sekwencyjna (np. P=0.9, S=0.1)


  • Zadanie2: Równoważenie obciążenia.
  • Idea rownowazenia obciazenia polega na tym, aby procesy wykonywaly ilosc pracy proporcjonalna do ich mozliwosci.
    • Poczatkowo wszystkie procesy alokuja tyle samo wierszy do policzenia.
    • Proces powolniejszy oddaje swoje wiersze sasiednim procesom. Proces ten zmniejsza w ten sposob ilosc obliczen ktore sam musialby wykonac i przekazuje je do procesu szybszego przez co wyrównuje sie czas wykonania glównej petli.
    • Decyzja o oddaniu wiersza lub nie podejmowana jest na podstawie pomiaru szybkosci wykonania glównej petli programu i porównaniu wyników miedzy sasiednimi procesami.
    • Wiersze oddawane sa pojedynczo po każdej interacji glównej petli programu.
    • Program do uzupelnienia w miejscach oznaczonych TODO:
      life-balanced-v2.c

    Marcin Radecki