home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco  

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




 
 
Ramblers Top100 hit.ua: ЯЕИВЮЯ МЮ ЯЮИРЕ, ОНЯЕРХРЕКЕИ Х ОПНЯЛНРПНБ ГЮ ЯЕЦНДМЪ пЕИРХМЦ@Mail.ru