ludia ako mate riesenu situaciu napr vtom prvom zadani. Ked volat program s viac procesmi ako je (prvkov pola / 2), ak chcem aby kazdy proces/uzol spracoval aspon 2 prvky pola. Ako mam zabit tie nevyuzite navyse procesi popripade ich ani nespustit a robit vypocet iba na potrebnych procesoch? Moje riesenie neni dobre ale newem ako dalej.
Ncitam si pocet, rank, BUFSIZE = 10 kostanta velkosti pola
MPI_Comm_size(MPI_COMM_WORLD, &size)
MPI_Comm_rank(MPI_COMM_WORLD, &rank)
zistim si pocet potrebnych procesov. Neriesim tu teraz pole neparnej velkosti atd.
if(size >= (BUFSIZE / 2)) size = BUFSIZE / 2;
neaky kod pre rank == 0....
dynamicky vytvorim mensia polia pre jednotlive procesy
MPI_Scatter(...) rozdelenie Pola pre jednotlive (5) procesy a naplnenie mensich poli
if (rank >= size) return 0; toto ma zaujima je to blbost ale newem ako inak riesit aby sa vykonaval kod len na potrebnych procesoch/uzloch.
else {
vypocet lokalnych maxim
}
MPI_Reduce(najdenie celkoveho maxima)