IvanPetukhov / barrier-function

My new implementation of MPI-barrier function

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

barrier-function

Разработать, написать и отладить процедуру-функцию барьерной синхронизации для произвольного числа процессов, используя синхронные обмены. Оценка времени выполнения не должна превышать O(log(p)). Допускается использование функций MPI_Send/MPI_Recv, но в предположении, что они выполняются именно синхронно.

Пример прототипа требуемой функции:

void barrier(int rank, int size); // // size – число процессов // rank – номер процесса, из диапазона [ 0, …, size-1 ]

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

Барьер – это функция, вызываемая всеми участвующими в акте взаимной синхронизации процессами. Ни один из вызвавших эту функцию процессов не завершит ее выполнение до тех пор, пока все процессы не начнут выполнение этой функции.

Удобно представить себе барьер как двухэтапную функцию: на первом этапе в каждом из участвующих в барьерной синхронизации должна быть вызвана функция барьер. На втором этапе каждому из процессов должно быть возвращено управление. Второй этап может быть выполнен только после полного завершения первого этапа. В соответствии с этим требованием, должны быть предусмотрена процедура, гарантирующая предоставление каждому их процессов информации о том, что функция барьер вызвана на всех процессах. В случае использования в качестве синхронизирующего примитива синхронных обменов, можно предложить стратегию синхронизации, представленную на рисунке 1.

Первый этап Первый этап

Второй этап Второй этап

Рисунок 1. Двухэтапное выполнение барьера

Операция «барьер» является коллективной операцией. В общем случае, при произвольном числе процессоров, время выполнения барьера можно оценить следующим образом:

Формула,

где – число участвующих в барьерной синхронизации процессов, – время выполнения передачи короткого сообщения между двумя процессами

About

My new implementation of MPI-barrier function


Languages

Language:C++ 100.0%