Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

parallel / 4-2010

.pdf
Скачиваний:
25
Добавлен:
31.05.2015
Размер:
1.32 Mб
Скачать

" #$

,

, ,

. . 4

,

.

"

.

" 4

, (,

. , , ,

.

2008

" #$

,

MPI_Send_init:

int MPI_Send_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

MPI_Send_init(buf, count, datatype, dest, tag, comm, request, ierr)

2008

" #$

" (

. . MPI_Bsend_init,

MPI_Ssend_init MPI_Rsend_init.

" MPI_Start:

int MPI_Start(MPI_Request *request)

MPI_Start(request, ierr)

2008

" #$

! MPI_Startall:

int MPI_Startall(int count, MPI_request *requests)

MPI_Startall(count, requests, ierr)

,

requests.

,$ MPI_Wait, MPI_Test

.

2008

! #

. :

;

;

MPI;

- ;

.

2008

!

$ . :

parallel-g112@yandex.ru

2008

!

2

. ,

.

2008

home_task.cpp

#include "mpi.h" #include <stdio.h>

int main(int argc,char *argv[])

{

int myid, numprocs, **buf, source, i; int message[3] = {0, 1, 2};

int myrank, data = 2002, count, TAG = 0; MPI_Status status;

MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if (myrank == 0)

{

MPI_Send(&data, 1, MPI_INT, 2, TAG, MPI_COMM_WORLD);

}

else if (myrank == 1) {

MPI_Send(&message, 3, MPI_INT, 2, TAG, MPI_COMM_WORLD);

}

2008

else

{

MPI_Probe(MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &status); source = status.MPI_SOURCE;

MPI_Get_count(&status, MPI_INT, &count); for (i = 0; i < count; i++){

buf[i] = (int *)malloc(count*sizeof(int));

}

MPI_Recv(&buf[0], count, MPI_INT, source, TAG, MPI_COMM_WORLD, &status);

for (i = 0; i < count; i++){ printf("received: %d\n", buf[i]);

}

}

MPI_Finalize(); return 0;

}

2008

' #$

( " MPI

Соседние файлы в папке parallel