MPI_MINLOC в Фортране - PullRequest
       16

MPI_MINLOC в Фортране

0 голосов
/ 10 октября 2019

Я хотел бы найти позицию и значение минимального элемента очень длинного массива в Фортране.

Встроенная функция MINLOC работает хорошо:

position = MINLOC(long_array(:), 1)
value = long_array(position)

Однако это очень медленно из-за размера массива. Я хотел бы распараллелить это с помощью MPI.

К моему удивлению, кажется, что MPI_MINLOC может дать вам значение минимума, а также ранг, который удерживает это значение, но не позицию в этом ранге.

Что-то вроде (из MPI Get Processor с минимальным значением ):

local = long_array[slice]
MPI_Allreduce(local, global, 1, MPI_2INT, MPI_MINLOC, MPI_COMM_WORLD)
print*,'Rank ',global[1]
print*,'Value', global[0]

где «slice» - 1 / n часть массива, где n - числоКонечно.

Есть ли эффективный способ получить глобальную позицию минимума и значения?

Большое спасибо, Лучший, Сэм

...