Hello,I am using OpenMPI v1.6.1 on Windows 7, and some time i am looking for 
any solution to send a struct with vector or using dynamics arrays.I know send 
structs with differents datatypes, like int, double, struct. But i have some 
problem sending vector or dynamics arrays.
Using MPI_Type_vector, MPI_Type_continuous or MPI_Type_extend i dont resolve....
Code: 
#include "mpi.h"#include <iostream>#include <time.h>  #include <vector>
using namespace std;
struct Teste6{  vector<int> t6;};
int main(int argc, char** argv){                MPI_Datatype struTeste6, 
oldTTeste6[1], newTTeste6;     int     blcklensTeste6[1];      MPI_Aint        
offsTeste6[1], extTeste6;
        Teste6 tst6;            int max;        int myRank;     MPI_Status 
status;              MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, 
&myRank); MPI_Comm_size(MPI_COMM_WORLD, &max);            // Teste6       
//MPI_Type_vector(2,1,1,MPI_INT, &newTTeste6);  MPI_Type_contiguous(2, MPI_INT, 
&newTTeste6);   offsTeste6[0] = 0;      oldTTeste6[0] = newTTeste6;     
blcklensTeste6[0] = 1;          MPI_Type_struct(1, blcklensTeste6, offsTeste6, 
oldTTeste6, &struTeste6);        MPI_Type_commit(&struTeste6);   //      
if(myRank == 0) {                               //Add element 5 and element 10 
to vector on struct              tst6.t6.push_back(5);           
tst6.t6.push_back(10);                //Print elements to look before send      
        printf("\n myRank: %d - tst6.t6[0]: %d - tst6.t6[1]: %d", myRank, 
tst6.t6[0], tst6.t6[1]);              //Send to Process 1             
MPI_Send(&tst6, 1, struTeste6, 1, 1, MPI_COMM_WORLD);   }       else    {       
         // Receive from Process 0              MPI_Recv(&tst6, 1, struTeste6, 
0, 1, MPI_COMM_WORLD, &status);          //This code dont print received 
struct, some problem here, process die.         printf("\n Slave 1 - myRank: %d 
- tst6.t6[0]: %d - tst6.t6[1]: %d", myRank, tst6.t6[0], tst6.t6[1]);    }
        MPI_Finalize(); return 0;}
--Thanks
Atenciosamente,Jéferson Fernandes da Silva                                      
  

Reply via email to