Перейти к основному содержанию

PARALLEL.RU - Информационно-аналитический центр по параллельным вычислениям

© Воеводин Вл.В.
Курс лекций
"Параллельная обработка данных"
Лекция 5.

Схематичные примеры MPI-программ


Пример 1a

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();
}

Пример 1b

#include "mpi.h"
int main (int argc, char **argv)
{
   char message[20];
   int myrank;
   MPI_Status status;
   MPI_Init (&argc, &argv);
   MPI_Comm_rank (MPI_COMM_WORLD, &myrank);
   if (myrank==0)    /* code for process zero */
   {
      strcpy (message, "Hello, there");
      MPI_Send(message, strlen(message), MPI_CHAR, 1, 99, MPI_COMM_WORLD);
   }
   else   /* code for process one */
   {
      MPI_Recv (message, 20, MPI_CHAR, 0, 99, MPI_COMM_WORLD, &status);
      printf ("received: %s:\n", message);
   }
   MPI_Finalize();
}

Пример 1c

main(int argc, char **argv)
{
   int me, size;
   int SOME_TAG=0;
   MPI_Status status;
   . . .
   MPI_Init (&argc, &argv);
   MPI_Comm_rank (MPI_COMM_WORLD, &me);    /* local */
   MPI_Comm_size (MPI_COMM_WORLD, &size);  /* local */
   if ((me % 2)==0)
   {
     /* send unless highest-numbered process */
     if ((me+1) < size)
        MPI_Send (..., me+1, SOME_TAG, MPI_COMM_WORLD);

   }
   else
     MPI_Recv (..., me-1, SOME_TAG, MPI_COMM_WORLD, &status);
   . . .
   MPI_Finalize();
}

© Лаборатория Параллельных Информационных Технологий, НИВЦ МГУ Rambler's Top100

  • О Сервере
  • Что нового?
  • Компьютеры
  • Технологии
  • Исследования
  • Метакомпьютинг
  • Информация
  • Конференции
  • Центры
  • История
  • Россия
  • Новости
  • Наш сервис
  • ЦКП

Форма поиска

Читать Telegram