I want to send vectors of myclass between nodes. But myclass has 
arrays inside of it. So i defined Datatype mpi_arrays to define the
arrays in myclass and then i defined another Datatype for vectors.
When i send vectors between nodes i get this error:

[localhost:31457] *** Process received signal ***
[localhost:31457] Signal: Segmentation fault (11)
[localhost:31457] Signal code:  (128)
[localhost:31457] Failing at address: (nil)
[localhost:31457] [ 0] /lib/tls/libpthread.so.0 [0x84ba90]
[localhost:31457] [ 1] 
a.out(_ZSt13__destroy_auxIP3BoxEvT_S2_12__false_type+0x19) [0x805a4f9]
[localhost:31457] [ 2] a.out(_ZSt8_DestroyIP3BoxEvT_S2_+0x1a) [0x8059650]
[localhost:31457] [ 3] a.out(_ZNSt6vectorI3BoxSaIS0_EED1Ev+0x1a) [0x80588d2]
[localhost:31457] [ 4] a.out(_Z13GenerateBoxesv+0xe01) [0x8056055]
[localhost:31457] [ 5] a.out(main+0x38) [0x8056d08]
[localhost:31457] [ 6] /lib/tls/libc.so.6(__libc_start_main+0xd3) [0x13cde3]
[localhost:31457] [ 7] a.out(__gxx_personality_v0+0x81) [0x8054fa9]
[localhost:31457] *** End of error message ***

I am a confused about what am i doing wrong and how to fix errors. 
It shows that i receive the vector, but then it crashes. 
The way i define arrays is by using contiguous, and vectors also
using contiguous.

Some code for the error that i get:
Box b;
Vector<Box> vb;
from 1 to 20 set up B and vb.push_back(b);
MPI_Datatype MPI_box;
MPI_Type_contiguous(9, MPI_INT, &MPI_box);
MPI_Type_commit(&MPI_box);      
Vector<Box> vb2;
vb2.resize(20);
MPI_Send(&vb[0], 20, MPI_box, 1, tag, MPI_COMM_WORLD);
MPI_Recv(&vb2[0], 20, MPI_box, 1, tag, MPI_COMM_WORLD, &status); 

class Box has two int array inside it like
int a[3];
int b[3];

Thank you for talking a look.

Reply via email to