2014-09-20 4 views
1

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

typedef struct Car { 
    // struct 
} Car; 

int main 
(int argc, char *argv[]) 
{ 
    // Shared variables 
    int size, rank; 
    Car cars[20]; 

    MPI_Init(&argc, &argv); 
    MPI_Comm_Size(MPI_COMM_WORLD, &size); 
    MPI_Comm_Rank(MPI_COMM_WORLD, &rank); 

    // Node logic 
} 

Это все верно? Если да, то как бы я обрабатывал случай, если бы я хотел столько автомобилей, сколько количество узлов?

+0

Автомобили? что ты спрашиваешь? –

+0

См. Обновление. – A23

ответ

2

MPI не выделяет память для совместного использования через процессы. В MPI каждый процесс отвечает за собственное управление памятью. Если вы хотите выделить массив размером size для каждого процесса, вам необходимо выделить память после вызова MPI_comm_size. После этого вы либо инициализируете значения для каждого процесса отдельно, либо инициализируете их в одном процессе и обмениваете сообщения для обновления других процессов.

Но у вас по-прежнему нет общей памяти. У вас есть один и тот же имя для каждого процесса, и вы, программист, пишете код, чтобы каждый процесс имел одинаковый вид значений в этом массиве.

+0

Gotcha. Это все ясно. Меня смутило! – A23

Смежные вопросы