Высокопроизводительные вычисления на кластерах. Беликов Д.А - 68 стр.

UptoLike

68
End If
C «0»-процесс рассылает всем результат суммирования
Call MPI_BCAST(GSum, 1, MPI_DOUBLE_PRECISION, 0,
$ MPI_COMM_WORLD, Ierr)
If (Rank.eq.0) Then
time2 = MPI_WTime()
Write (6,*) 'Result=',GSum,' Error=',1-GSum,
$ ' Time=',time2 - time1
End If
Call MPI_FINALIZE(Ierr)
Stop
End
3.7 Задания
1. На нулевом процессе ввести с клавиатуры значение целого ти-
па в переменную temp. Для инициализированных процессов органи-
зовать передачу этого значения по кольцу 0→1→2 →…→size-1 с
помощью функций Send и Recv. На процессе с номером size-1 рас-
печатать значение temp.
2. На каждом из size инициализированных процессов компонен-
ты массива
m
y,,y,y ...
21
вычисляются по формуле:
5...1,2cos =mm,,=k(x),=y
k
k
, значение
x
на процессе с номером
1...0,1 size,=rank определяется с помощью датчика случайных
чисел: rand()))+((rank=x 1cos . Вычислить максимальный эле-
мент массива
110
...
size
R,,R,R , 1...0,1
1
size,=i,y=R
m
=k
ki
. Выдать
результат на нулевом процессе.
3. MPI-процесс с номером 0 вводит с клавиатуры массив из 8 це-
лых чисел. Затем с помощью функции MPI_SCATTER рассылает по
4 процессам фрагменты этого массива. Каждый процесс печатает
полученные данные. Произвести сложение всех элементов массива,
распределенных по процессам, с помощью функций MPI_REDUCE