Sono un neofita della programmazione MPI, l'apprendimento di stiil, ho avuto successo fino a creare i tipi di dati derivati definendo le strutture. Ora voglio includere Vector nella mia struttura e voglio inviare i dati attraverso il Processo. per esempio:Uso vettoriale in 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
Ora utilizzando MPI voglio inviare i dati nella struttura attraverso i processi. È possibile per me creare i vettori MPI_type_struct inclusi e inviare i dati?
Ho provato a leggere i forum, ma non sono in grado di ottenere un'immagine chiara dalle risposte fornite. Spero di essere in grado di ottenere un'idea chiara o un approccio per inviare i dati
PS: posso inviare i dati individualmente, ma è un overhead di inviare i dati utilizzando MPI_Send/Recieve se consideriamo il dominio molto grande (10000 * 10000)
Grazie per la risposta rapida, il problema qui voglio inviare l'intera struttura in una volta invece di inviare una singola variabile di vettore e altri tipi di dati, riducendo così il sovraccarico di comunicazione tra i processi ... e ho 10 vettori per essere inviato attraverso per la comunicazione .... quindi porta a rallentare il tempo di calcolo e lì diminuendo l'efficienza – lsk1985
@ lsk1985, OK, non ho abbastanza esperienza con MPI per essere di grande aiuto allora. Scusate. Farei semplicemente attenzione ad evitare di inviare dei puntatori tra i processi (invece dei dati a cui puntano). –
Se si dispone di un array di puntatori, creare un MPI_Type_hindexed, che è una riga di blocchi, con lo spostamento espresso in byte. Ci vuole solo un piccolo indirizzo aritmetico. –