Hi all.
I have a c++ application using stl vectors. Actually, vectors of vectors,
like the one below.
using namespace std;
typedef vector <int> iVec;
typedef vector <iVec> image;
typedef vector <image> image3D;
int tam=10;
image3D test (tam) ;
iVec b ( 10 );
for ( int i=0; i<tam; i++ ) {
test[i].resize( tam );
b[i] = i;
for ( int j=0; j<tam; j++ ) {
test[i][j].resize( tam );
for ( int k=0; k<tam; k++ ) {
test[i][j][k] = i*j*k;
}
}
}
I would like to send that to other processor. I read some other emails which
said things about resizing vectors and that really did work for one
dimension vectors, but it doesn't work for 2D or 3D vectors.
MPI_Send(&tam, sizeof( tam ), MPI_INT, 1, 17, MPI_COMM_WORLD);
MPI_Send(&b[0], b.size(), MPI_INT, 1, 17, MPI_COMM_WORLD); /*this work for
1D*/
Receiving
int tam;
MPI_Recv( &tam, sizeof( tam ), MPI_INT, 0, 17, MPI_COMM_WORLD, &status );
b.resize( tam );
MPI_Recv( &b[0], b.size(), MPI_INT, 0, 17, MPI_COMM_WORLD, &status );
I'd like to do the same, but for 2D and 3D vectors. Has anyone ever tried
anything like that?
Thanks in advance
--
Alysson Nunes Diógenes
Mechanical Engineering PhD Student
Laboratório de Meios Porosos e Propriedades Termofísicas
Universidade Federal de Santa Catarina
|