Представлять указатель как строку и наоборот
Я пытаюсь написать программу с использованием MPI, и у меня есть вопрос, который мне очень поможет. Можно ли в MPI каким-либо образом отправить указатель на другой процесс? Я хочу просто отправить указатель, а не копировать память из одного процесса в другой.
Если это не применимо, можно ли, например, представить указатель в виде строки, а затем отправить его, чтобы принимающий процесс мог снова привести его к указателю и получить доступ к памяти, на которую он указывает?
Заранее спасибо.
1 ответ
Краткий ответ: нет, вы не можете этого сделать.
Объяснение состоит в том, что процессам MPI никоим образом не гарантируется совместное использование памяти. Фактически, большинство реализаций MPI отображают процессы MPI на реальные процессы ОС, чтобы они не разделяли одно и то же пространство адресов памяти. Кроме того, вы можете запускать приложения MPI в кластере, и в этом случае процессы MPI даже не работают на одном и том же оборудовании.
РЕДАКТИРОВАТЬ:
MPI2 вводит оконные операции (см., Например, MPI_WIN_CREATE
), которые имитируют доступ к общей памяти. Ваша реализация может решить, что, если все процессы выполняются на одном узле, такие оконные операции могут быть реализованы с использованием общей памяти. Но, как всегда с MPI, у вас никогда нет никаких гарантий, как операция будет реализована