Soy nuevo en la programación MPI, stiil learning, tuve éxito hasta crear los tipos de datos derivados definiendo las estructuras. Ahora quiero incluir Vector en mi estructura y quiero enviar los datos a través del Proceso. por ejemplo:Uso de vectores en MPI (C++)
struct Structure{
//Constructor
Structure(): X(nodes),mass(nodes),ac(nodes) {
//code to calculate the mass and accelerations
}
//Destructor
Structure() {}
//Variables
double radius;
double volume;
vector<double> mass;
vector<double> area;
//and some other variables
//Methods to calculate some physical properties
Ahora, al usar MPI, deseo enviar los datos en la estructura a través de los procesos. ¿Es posible para mí crear los vectores MPI_type_struct incluidos y enviar los datos?
He intentado leer a través de foros, pero no puedo obtener una imagen clara de las respuestas dadas allí. Espero poder obtener una idea clara o un enfoque para enviar los datos
PD: puedo enviar los datos individualmente, pero es una sobrecarga de enviar los datos usando MPI_Send/Receve si consideramos que el dominio es muy grande (digamos 10000 * 10000)
Gracias por la respuesta rápida, aquí el problema es que quiero enviar toda la estructura al mismo tiempo en lugar de enviar una sola variable de vectora y otros tipos de datos, reduciendo así la sobrecarga de comunicación entre los procesos ... y tengo 10 vectores para se envía a través de la comunicación ... por lo tanto, conduce a un tiempo de cálculo lento y, al disminuir la eficiencia – lsk1985
@ lsk1985, OK, no tengo suficiente experiencia con MPI para ser de mucha ayuda en ese momento. Lo siento. Simplemente tendría cuidado de evitar el envío de punteros entre procesos (en lugar de los datos a los que apuntan). –
Si tiene una matriz de punteros, cree un MPI_Type_hindexed, que es una fila de bloques, con desplazamiento expresado en bytes. Solo se necesita una pequeña aritmética de direcciones. –