The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Пример 2 Up: Примеры Previous: Примеры   Contents

Пример 1

Пример 1а:

   main(int argc, char **argv) 
   { 
     int me, size; 
     ... 
     MPI_Init (&argc, &argv); 
     MPI_Comm_rank (MPI_COMM_WORLD, &me); 
     MPI_Comm_size (MPI_COMM_WORLD, &size); 
 
     (void)printf ("Process %d size %d\n", me, size); 
     ... 
     MPI_Finalize(); 
   }

Пример 1a является программой, которая инициализируется, обращается к ``общему'' коммуникатору и печатает сообщение.

Пример 1b (предполагается, что аргумент size четный):

    main(int argc, char **argv) 
    { 
       int me, size; 
       int SOME_TAG = 0; 
       ... 
       MPI_Init(&argc, &argv); 
 
       MPI_Comm_rank(MPI_COMM_WORLD, &me);   /* локально */ 
       MPI_Comm_size(MPI_COMM_WORLD, &size); /* локально */ 

       if((me % 2) == 0) 
       { 
          /* посылать вплоть до процесса с самым старшим номером */ 
          if((me + 1) < size) 
             MPI_Send(..., me + 1, SOME_TAG, MPI_COMM_WORLD); 
       } 
       else 
          MPI_Recv(..., me - 1, SOME_TAG, MPI_COMM_WORLD); 
        ... 
       MPI_Finalize(); 
    }

Пример 1b схематично иллюстрирует обмены сообщениями между ``четными'' и ``нечетными'' процессами в ``общем'' коммуникаторе.



Alex Otwagin 2002-12-10



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру