La comunicación es un factor importante en el paralelismo pues esto afecta el tiempo total del algoritmo
t.total= t. proceso + t. comunicación + t. ocioso
Tenemos algunas operaciones básicas de comunicación entre los procesos en OPEN_MPI:
Send y Recive: Con Send un proceso envía la información de una variable a otro proceso, con Recive un proceso recibe la información de una variable de otro proceso.
send(void *sendbuf, int nelems, int dest)
receive(void *recvbuf, int nelems, int source)
Donde:
sendbuf apunta a una o más variables (array) que serán enviadas, y recvbuf a las que se reciben, nelems es el número de variables, dest y source identifican al proceso destino y origen.
Broadcast: Al inicio solo un proceso tiene el valor de una variable "M" de tamaño m. Al final, hay p copias (por que hay p procesos) de ese valor M, una copia para cada proceso.
MPI_Bcast(start, count, datatype, root, com)
start: puntero a los datos a enviar
count: número de elementos a enviar
datatype: tipo de dato
root: identificación del proceso origen
comm: Identificación del comunicador
All Reducción: hay p valores diferentes de M (Mi) y al final hay un solo valor de M (combinación de los Mi por ejemplo como promedio, suma, producto, máximo) en un solo proceso.
MPI_Reduce(start, result, count, datatype, operation, root, comm)
donde:
start: puntero a los datos a enviar
result: puntero para almacenar el resultado
count: número de elementos a enviar
datatype: tipo de dato
operation: identificación de la operación colectiva
root: identificación del proceso origen
comm: Identificación del comunicador
result: puntero para almacenar el resultado
count: número de elementos a enviar
datatype: tipo de dato
operation: identificación de la operación colectiva
root: identificación del proceso origen
comm: Identificación del comunicador
MPI tipos de datos:
Se definen los siguientes tipos de datos MPI:
MPI_CHAR char
MPI_SHORT short int
MPI_INT int
MPI_LONG long int
MPI_UNSIGNED_CHAR
MPI_UNSIGNED_SHORT
MPI_UNSIGNED
MPI_UNSIGNED_LONG
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double
MPI_BYTE
MPI_PACKED
visita:
http://www.crearticaperu.com
MPI_CHAR char
MPI_SHORT short int
MPI_INT int
MPI_LONG long int
MPI_UNSIGNED_CHAR
MPI_UNSIGNED_SHORT
MPI_UNSIGNED
MPI_UNSIGNED_LONG
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double
MPI_BYTE
MPI_PACKED
visita:
http://www.crearticaperu.com
No hay comentarios.:
Publicar un comentario