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

   struct        // структура для хранения значения макс. эл. и его позиции

   {

      int max;   // максимальное значение

      int pos;   // позиция

   }

Генерация значений элементов массива производиться с использованием генератора произвольных чисел.

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

  {

      mas[i] = (int)rand() * (double)((double)rand() / ((unsigned)rand()+3));

  }

Рассылка массива происходит с использованием функции MPI_Bcast:

MPI_Bcast(&mas, LEN, MPI_INT, 0, MPI_COMM_WORLD);

Операция сбора данных (редукции) происходит вызовом функции MPI_Reduce:

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

Для измерения времени исполнения участка программы используется вызов функций MPI_Wtime в начале работы и непосредственно перед выводом результатов.

t1 = MPI_Wtime();

t2 = MPI_Wtime();

printf("\nTime = %3.10f s", t2 - t1);  // вывод итогового времени работы

Полный текст исходного кода с комментариями приведен в Приложении.

Пример работы программы: