| |
MPI_WIN_FENCE(assert,win)
| IN | ASSERT | программное допущение (целое) | |
| IN | WIN | объект окна (дескриптор) |
int MPI_Win_fence(int assert, MPI_Win win) MPI_WIN_FENCE(ASSERT, WIN, IERROR) INTEGER ASSERT, WIN, IERROR void MPI::Win::Fence(int assert) const
MPI вызов MPI_WIN_FENCE(assert, win) синхронизирует RMA
вызовы к win. Вызов является коллективным в группе win.
Все RMA операции в win, происходящие в данном процессе и
начатые до вызова fence, выполнятся в этом процессе до того, как
произойдет возврат из вызова fence. Они выполнятся в их адресате
до того, как произойдет возврат из fence в адресат. RMA
операции в win, начатые процессом после того, как произойдет возврат
из fence, получат доступ к окну адресата только после того, как
процессом-адресатом будет выполнен вызов MPI_WIN_FENCE.
Вызов завершает период RMA доступа, если ему предшествовал другой
вызов fence и локальные процессы, созданные коммуникационными RMA вызовами к win между этими двумя вызовами. Вызов завершает
RMA период предоставления доступа, если ему предшествовал другой
вызов fence, и локальное окно было адресатом RMA обращений
между этими двумя вызовами. Вызов начинает RMA период
предоставления доступа, если он предшествует другому вызову fence и
коммуникационным RMA вызовам, созданным между этими двумя вызовами.
Вызов начинает период предоставления доступа, если он предшествует другому
вызову fence и локальное окно является адресатом RMA
обращений между этими двумя вызовами fence. Таким образом, вызов
fence эквивалентен вызовам к подмножеству операций post,
start, complete, wait.
Вызов fence обычно влечет за собой барьерную синхронизацию: процесс
завершает вызов
MPI_WIN_FENCE только после того, как все другие
процессы в группе сделали свой соответствующий вызов. Тем не менее, вызов
MPI_WIN_FENCE который, как известно завершает не любой период, (в
частности, вызов с assert = MPI_MODE_NOPRECEDE) не обязательно
действует как барьер.
Аргумент assert используется, чтобы обеспечить соглашения о контексте
вызова, которые могут использоваться для различных оптимизаций. Это
описывается в разделе 4.4.4. Значение assert = 0 всегда справедливо.
Совет пользователям: Вызовы MPI_WIN_FENCE должны как
предшествовать, так и
следовать за вызовами get, put или accumulate,
которые синхронизируются с помощью вызовов fence. []
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |