Program w oparciu o implementację MPI/LAM...

CyberWolf

Użytkownik
Dołączył
Marzec 6, 2010
Posty
3
Witam!
Używam płyty LiveCD Pelican HPC do uruchamiania domowego superkomputera.
Jak dotąd sprawdzałem na nim aplikację o takim kodzie:
Kod:
#include <stdio.h>
#include "mpi.h"

int main(int argc,char *argv[]){
int nproc;
int iproc;
char proc_name[MPI_MAX_PROCESSOR_NAME];
int nameLenght;

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &nproc);
MPI_Comm_rank(MPI_COMM_WORLD, &iproc);

MPI_Get_processor_name(proc_name, &nameLenght);
printf("Hello world, I am host %s with rank %d of %d\n", proc_name, iproc, nproc);

MPI_Finalize();

return 0;
}

Nic ambitnego.
Kompilację pliku hello.c wykonuję poleceniem
Kod:
mpicc -o hello hello.c
Uruchomienie skompilowanego programu wykonuję tak
Kod:
mpirun -np C hello
lub
Kod:
mpirun -np N hello

Jak widać to nic ambitnego.
Chciałem napisać aplikację która przyjmuje dwie liczby jako parametry (od do) np 1 1000000
Potem, żeby liczba z argumentu 2 była dzielona przez liczbę procesorów jakie ma ten klaster. W efekcie otrzymujemy tyle zbiorów liczb dla każdego procesora co liczba procesorów w uruchomionym klastrze. Każdy procesor z każdej liczby ze swojego zbioru wyciąga pierwiastek 2 stopnia i dodaje do swojej zmiennej wynik, a potem na koniec, żeby nastąpiło zsumowanie wyników z poszczególnych procesorów w jeden i wyświetlenie
np podaje programowi 1 10
mam 3 komputery w tym jeden z 2 procesorami, więc obliczenia wyglądały by tak (zarysowo oczywiście :))

node0=sqrt(4)+sqrt(8)
node1A=sqrt(3)+sqrt(7)
node1B=sqrt(2)+sqrt(6)+sqrt(10)
node2=sqrt(1)+sqrt(5)+sqrt(9)

Jest node1A i node1B bo zakładam na tym schemacie że to jest komputer z dwoma procesorami.

Gdy wszystkie skończą to żeby nastąpiło zsumowanie do zmiennej znajdującej się w weźle master czyli node0 czyli wg takiej zasady.

node0=node0+node1A+node1B+node2

Brakuje mi jak na razie wprawy w pisaniu tego typu aplikacji, a gdybym miał taką to bym mógł się myślę w końcu rozkręcić żeby pisać własne...
Jest ktoś wstanie pomóc napisać mi taką aplikację to proszę o pomoc...
 
Ostatnia edycja:
Do góry Bottom