Написание программы с использованием библиотеки MPI для нахождения максимального значения и его индекса из массива чисел
15

      for (j = 0; j < LEN; j++)

      {

        printf("%d ", mas[j]);   // вывод содержимого массива на экран

      }

      printf(";\n");

    }

    // ---

 

    MPI_Bcast(&mas, LEN, MPI_INT, 0, MPI_COMM_WORLD);  // рассылка массива

 

    eps = (int) LEN / size;   // разделение масс. на части

    start_p = rank * eps;    // начальная позиция для текущего процесса

 

    if (rank == size-1) // для последнего процесса

    {

      In.max = 0;

      In.pos = 0;

      // поиск максимального элемента и его номера

      for (int i = start_p; i < LEN; i++)

      {

        if (mas[i] > In.max)  // проверка

        {

          In.max = mas[i];

          In.pos = i + 1;

        }

      }

 

    }

    else   // все остальные процессы

    {

       In.max = 0;

       In.pos = 0;

       // поиск максимального элемента и его номера

       for (int i = start_p; i < start_p + eps; i++)

       {

         if (mas[i] > In.max)

         {

           In.max = mas[i];

           In.pos = i + 1;

         }

       }

 

    }

 

   // сбор (редукция) данных и выбор итогового максимального значения

   MPI_Reduce(&In.max, &Out.max, 1, MPI_2INT, MPI_MAXLOC, 0, MPI_COMM_WORLD);

 

   // вывод результатов на экран