X


[ Pobierz całość w formacie PDF ]
.Wartość N jest wprowadzana w wierszu poleceń.Powinna ona być podzielna przez nproc:lN = atoi(argv[1]);if (argc != 2)perror("Usage: transpose <N, for a N x N matrix>");if (N % nproc)perror("N must be divisable by nproc");NL = N / nproc;lProcesory przydzielają pamięć dla macierzy składowych.Procesor główny inicjuje macierz wejściową:la = (int *) malloc(N * N sizeof(int));if (!a)perror("malloc a");a_local = (int *) malloc(N * NL * sizeof(int));if (!a_local)perror("malloc a _local");b = (int *) malloc(N * N sizeof(int));if (!b)perror ("malloc b");b_local = (int *) malloc(N * NL * sizeof(int));if (!b_local)perror("malloc b_local");if (iproc == 00{for (i = 0 ; i < N * N ; i++){a[i] = i;}}lDo przesłania fragmentu macierzy do każdego procesora używana jest funkcja MPI_Scatter:lMPI_Scatter(a, N*NL, MPI_INT, a_local, N*NL, MPI_INT, 0, MPI_COMM_WORLD);lProcesory wykonują operację transponowania macierzy:ltranspose(N, a_local, b_local);lMacierz wynikowa jest gromadzona przez procesor główny:lMPI_Gather (b_local, N*NL, MPI_INT, b, N*NL, MPI_INT, 0, MPI_COMM_WORLD);lProcesor główny wywołuje funkcję print_matrix do wyświetlenia macierzy wejściowej i wyjściowej:lif (iproc == 0){print_matrix("Input", M, a);print_matrix("Output", M, b);}free(a);free(a_local);free(b);free(b_local);lNa zakończenie programu jest wywoływana funkcja MPI_Finalize:lMPI_Finalize();exit(0) ;}Programowanie z zastosowaniem PVMPakiet o nazwie Parallel Virtual Machine (PVM) jest inną biblioteką zawierającą funkcje wymiany komunikatów, którą można zastosować do programowania klastrów Beowulf.Realizację projektu PVM rozpoczęto już w roku 1989.w Oak Ridge National Laboratory i obecnie jest ona szeroko stosowana w programowaniu równoległym.Porównanie PVM z MPIPo wprowadzeniu standardu MPI do programów wymieniających komunikaty i udostępnieniu pakietów oprogramowania o wysokiej jakości coraz więcej programistów zaczęło się interesować zastosowaniem MPI w programach pracujących równolegle.Głównym powodem większej popularności MPI w porównaniu z PVM jest to, że biblioteka ta jest bardziej funkcjonalna.Zawiera ona nieblokujące procedury komunikacyjne, umożliwia tworzenie własnych typów danych, obsługuje komunikatory zwiększające wydajność przekazu komunikatów miedzy węzłami i w operacjach kolektywnych, pozwala na definiowanie wirtualnych topologii procesów przyporządkowujących procesy do fizycznych procesorów.Standard MPI umożliwia pracę w heterogenicznym środowisku, w którym programy równoległe działają na pojedynczych komputerach posługujących się danymi o wzajemnie niezgodnych reprezentacjach.Użycie standardu MPI nie oznacza jednak obowiązku, że programy działające na takich zróżnicowanych komputerach mają się ze sobą komunikować.Jeżeli klaster Beowulf składa się z heterogenicznych węzłów, to najprostszą metodą uruchomienia aplikacji równoległej jest użycie PVM.Biblioteka ta w pełni obsługuje środowiska heterogeniczne na poziomie aplikacji użytkownika.Jeżeli komputery tworzące maszynę wirtualną korzystają z różnych reprezentacji danych, to program równoległy przy wysyłaniu danych musi używać specjalnego algorytmu kodującego.Oznacza to, że PVM będzie przekształcać te dane do standardowej postaci podczas pakowania ich do bufora nadawczego.Po rozpakowaniu danych w odbiorniku następuje ich przekształcenie do postaci standardowej używanej wewnątrz tego odbiornika.Pobieranie i instalacja PVMKod źródłowy PVM jest udostępniany bezpłatnie pod adresem http://www.netlib.org/pvm3/index.html, skąd można pobrać skompresowane archiwum.Pakiet zawiera także podręcznik użytkownika objaśniający proces instalacji oraz samouczek sieciowego programowania równoległego.W dalszej części tego podrozdziału zakładamy, że pakiet PVM został pobrany i zainstalowany w katalogu /usr/local/pvm3.Katalog ten powinien zostać skopiowany do każdego węzła w klastrze.Jeżeli klaster ma działać w środowisku heterogenicznym, to pakiet PVM musi być skompilowany w każdym węźle zgodnie z jego architekturą.Aby można było korzystać z PVM, należy wykonać następujące czynności:lZdefiniować zmienną środowiskową PVM_ROOT, nadając jej wartość /usr/local/pvm3,llZdefiniować zmienną środowiskową PVM_DPATH, nadając jej wartość $PVM_ROOT/usr/local/pvm3,llDodać lokalizację plików binarnych PVM do ścieżki wyszukiwania programów.Pliki te są umieszczone w katalogu $PVM_ROOT/bin,llDodać lokalizacje plików podręcznika systemowego PVM do ścieżki wyszukiwania podręcznika systemowego.lOprócz tego, podczas mnożenia procesów demon PVM szuka plików wykonywalnych użytkownika w podkatalogu pvm3/bin/LINUX umieszczonym w jego katalogu macierzystym [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lunamigotliwa.htw.pl
  •  

    Drogi uĚźytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

    Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

     Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerĂłw w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

     Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerĂłw w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

    Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.