A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Exemplos simples podem ser vistos AQUI

Apresentações semelhantes


Apresentação em tema: "Exemplos simples podem ser vistos AQUI"— Transcrição da apresentação:

1 Exemplos simples podem ser vistos AQUI
Point-to-Point Communication Standard, Síncrono, Buffered, Ready (modos de comunicar) Síncrono ou buffered Completion sempre independentemente da recepção Completion após conclusão da recepção Completion sempre independentemente da recepção Modos de comunicação: blocking ou non-blocking Exemplos simples podem ser vistos AQUI

2 STANDARD SEND MPI_Send (&buf, count, datatype, dest, tag, comm) não devem assumir completion antes de o receive ser iniciado não devem assumir completion após o receive ser iniciado processos devem preferencialmente receptores SEND SÍNCRONO MPI_Ssend (&buf, count, datatype, dest, tag, comm) (blocking send síncrono) a usar quando o emissor quer ter a certeza que a mensagem foi recebida

3 BUFFERED SEND MPI_Bsend (&buf, count, datatype, dest, tag, comm) blocking buffered send completion imediato MPI_Buffer_attach (&buffer, size) MPI_Buffer_detach (&buffer, size) onde size é o tamanho em bytes do buffer a usar int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count);

4 READY SEND MPI_Rsend (&buf, count, datatype, dest, tag, comm) blocking ready send a comunicação pressupõe que está já activo um receive. Se não estiver activo o receive correspondente, o resultado é indefinido.

5 Iteração actualiza linhas fantasma; actualiza u(x,y) Iteração inicializa o envio das linhas fronteira inicializa a recepção linhas fronteira actualiza u(x,y) nas linhas interiores espera pelo completion do envio espera pelo completion do receive actualiza última e primeira linhas de u(x,y)

6 NONBLOCKING STANDARD SEND
MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) typedef int MPI_Request;

7 Send Síncrono MPI_Iisend
Buffered Send MPI_Bsend Ready Send MPI_Rsend Receive MPI_Irecv MPI_Wait( MPI_Request *request, MPI_Status *status) MPI_Waitall(int count, MPI_Request *array_of_requests, MPI_Status *array_of_status) MPI_Waitany(int count, MPI_Request *array_of_requests, int *index, MPI_Status *status) MPI_Waitsome(int incount, MPI_Request *array_of_request, int *outcount, int *array_of_indices, MPI_Status *array_of_status)

8 MPI_Test( MPI_Request *request, int *flag, MPI_Status *status)
MPI_Testall( int count, MPI_Request *array_of_requests, int * flag, MPI_Status *array_of_statuses ) MPI_Testany( int count, MPI_Request *array_of_requests, int *index int *flag, MPI_Status *status) MPI_Testsome( int incount, MPI_Request *array_of_requests, int *outcount, int *array_of_indices, MPI_Status *array_of_status )

9 Exercício Modifique os programa para a resolução da equação de Poisson para utilizar cada um dos tipos de comunicação possível apresentados e compare as suas performances quando N = 1000.


Carregar ppt "Exemplos simples podem ser vistos AQUI"

Apresentações semelhantes


Anúncios Google