#include "mpi.h" #include #include int main(int argc, char **argv) { int K,N; int **tab, **tab2, **tmpwsk; int a, i, j, jed=0; int nb_count; //ilosc sasiadow int pokolenie, il_pok, next, prev, myid, psize, nsize; int completed; //numer requestu ktory sie skonczyl double pp; //prawdopodobienstwo jedynki MPI_Status s[2]; MPI_Request rs[2]; MPI_Request rr[2]; //odczytanie parametrow wywolania programu MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &psize); if (argc != 4) { fprintf(stderr, "Blad! Zle wywolanie. \n uzycie: %s \n", argv[0]); exit(1); } else { N = nsize = atoi(argv[1]); printf("nsize: %d ", nsize); pp = atof(argv[2]); printf("prawdop: %.2f\n", pp); il_pok=atoi(argv[3]); if ( pp > 1 || pp < 0) { fprintf(stderr, "Blad! Prawdopodobienstwo poza zakresem!!\n"); exit(1); } } //okreslenie po ile alokuja procesy K = nsize / psize; if (myid < (nsize % psize)) K++; fprintf(stderr, "proc %d alokuje %d\n", myid, K); //alokacja pamieci na tablice i wyzerowanie pamieci tab = (int **) calloc(K+2, sizeof(int *)); tab2 = (int **) calloc(K+2, sizeof(int *)); for (i = 0; i < K+2; i++) { tab[i] = (int *) calloc(N, sizeof(int)); tab2[i] = (int *) calloc(N, sizeof(int)); } //wypelnianie pola poczatkowymi wartosciami srandom(myid+time(NULL)); for (i=1; i<=K; i++) for (j=0; j