Каков практический предел того, сколько памяти может быть присоединено с помощью MPI_Win_attach?

#mpi #mpi-rma

#mpi #mpi-rma

Вопрос:

Я заметил эти биты из стандарта MPI 3.1:

Совет пользователям.Подключение памяти к окну может потребовать использования ограниченных ресурсов; таким образом, подключение больших областей памяти не рекомендуется в переносимых программах.

Совет разработчикам.Высококачественная реализация попытается сделать как можно больше доступной памяти для подключения.

Я просмотрел справочные страницы для MPI_Win_attach из различных реализаций (а именно MPICH, Cray MPICH, OpenMPI, SGI MPT и Intel MPI) и не видел каких-либо документированных ограничений на объем памяти, которые эти реализации имеют на то, сколько памяти может быть присоединено. Не следует ли мне слишком беспокоиться о приведенных здесь «советах пользователям»?

Комментарии:

1. Я предполагаю, что, поскольку память будет предназначена для доступа к RDMA, ее может / нужно будет «закрепить» или «заблокировать» память. Эта память, не подлежащая замене, обычно представляет собой ограниченное подмножество всей памяти. Поэтому лучше использовать его редко, чтобы избежать проблем. Однако объем закрепленной или заблокированной памяти обычно регулируется (во время загрузки), так что это тоже не так уж и важно.

2. @Gilles: Мне кажется неясным, почему это может повлиять, в частности, на MPI_Win_attach. Навскидку, я бы ожидал, что ограниченный пул закрепленной или иной «специальной» памяти будет в основном проблемой для MPI_Alloc_mem (и, соответственно, для любого пассивного RMA, который ограничен использованием буферов, выделенных MPI_Alloc_mem). Что делает MPI_Win_attach таким особенным?