PVM

Konfiguracja PVM

  1. Dodanie w pliku ~/.rhosts nazw komputerów w celu umożliwienia zdalnego logowania bez podawania hasła. Postać pliku:
      nazwa_hosta       nazwa_użytkownika
      inna_nazwa_hosta  nazwa_użytkownika
      ...
      
    Nazwa użytkownika może być pominięta, jeżeli na komputerze zdalnym i lokalnym ta nazwa jest taka sama
  2. Przetestowanie działania rsh:
    rsh nazwa_zdalnego_hosta
    W rezultacie wykonania polecenia powinniśmy zalogować się na wskazany komputer bez podawania hasła
  3. Ustawienie zmiennych środowiskowych: W pliku ~/.bashrc dopisujemy:
    export PVM_ROOT=/usr/lib/pvm3                                                                                                                  
    export PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`                                                                                                     
    export PVM_HOME=$HOME/pvm3/bin/$PVM_ARCH/
    
  4. Stworzenie katalogu na pliki wykonywalne:
    mkdir -p $PVM_HOME
    
  5. Przygotowanie pliku konfiguracyjnego dla PVM. Przykładowa postać pliku:
                                                                                                                                                 
    lab-sec-1                                                                                                                                      
    lab-sec-2                                                                                                                                      
    lab-sec-3
    
  6. Pobranie i rozpakowanie pliku example.tar.gz
  7. Zbudowanie programu master i salve poleceniem make
  8. Uruchomienie pvm:
    pvm nazwa_pliku_konfiguracyjnego
    
  9. Odczytanie informacji o dostępnych hostach poleceniem conf
  10. Dodanie nowego hosta poleceniem:
    add nazwa_hosta
    
  11. Usunięcie jednego z hostów poleceniem:
    delete nazwa_hosta
    
  12. Uruchomienie przykładowego programu:
    spawn -> master
    

Zadanie

  1. Napisać aplikację równlogłą do wyznaczania przybliżonej wartości liczby π metodą Monte Carlo. Realizację można oprzeć na poniżej wersji sekewncyjnej:
    #include < stdio.h >
    #include < stdlib.h >
     
    main(){
       unsigned long n = 0, N = 0, i;
       double x, y;
     
       for( i = 0; i < 100000; i++ ){
          x = drand48();
          y = drand48();
          N++;
          if ( x*x + y*y <= 1 )
             n++;
       } // for
       printf( "%lf\n", 4.0*n/N );
    }
    
    • Zrealizować aplikację zgodnie ze schematem master-slave: master uruchamia procesy slave, które odsyłają do niego wyniki obliczeń. pi.tar.gz
    • Zastosować mechanizm dynamicznych grup procesów oraz funkcję pvm_reduce. reduce.tar.gz
    • Zmodyfikować aplikację w taki sposób, żeby obliczenia rozpoczynały się dopiero po uzyskaniu gotowości do działania przez co najmniej 4 procesy typu slave. barrier.tar.gz