Распределение памяти массива при использовании MPI - PullRequest
5 голосов
/ 22 марта 2011

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

Ответы [ 2 ]

6 голосов
/ 22 марта 2011

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

Реализации, такие как Adaptive MPI и Phoenix , ставят несколько потоков в потоки в общем процессе, но они предпринимают шаги для изоляции каждого ранга, так что он думает, что он работает как отдельный процесс.

3 голосов
/ 22 марта 2011

MPI - это структура распределенной памяти.Он имеет только ограниченное понятие обработки совместно используемой памяти.Если общая память важна для производительности вашей программы, я предлагаю вам взглянуть на OpenMP ;оба могут быть объединены в одном приложении.(То есть каждый узел должен, в идеале, запускать один процесс на основе OpenMP, который будет связываться с другими экземплярами через MPI.)

...