Представлять указатель как строку и наоборот

Я пытаюсь написать программу с использованием MPI, и у меня есть вопрос, который мне очень поможет. Можно ли в MPI каким-либо образом отправить указатель на другой процесс? Я хочу просто отправить указатель, а не копировать память из одного процесса в другой.

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

Заранее спасибо.

1 ответ

Решение

Краткий ответ: нет, вы не можете этого сделать.

Объяснение состоит в том, что процессам MPI никоим образом не гарантируется совместное использование памяти. Фактически, большинство реализаций MPI отображают процессы MPI на реальные процессы ОС, чтобы они не разделяли одно и то же пространство адресов памяти. Кроме того, вы можете запускать приложения MPI в кластере, и в этом случае процессы MPI даже не работают на одном и том же оборудовании.

РЕДАКТИРОВАТЬ:

MPI2 вводит оконные операции (см., Например, MPI_WIN_CREATE), которые имитируют доступ к общей памяти. Ваша реализация может решить, что, если все процессы выполняются на одном узле, такие оконные операции могут быть реализованы с использованием общей памяти. Но, как всегда с MPI, у вас никогда нет никаких гарантий, как операция будет реализована

Другие вопросы по тегам