Your first post referred to other implementation. Anyway, if you have two vectors of strings:

CPU 0: vec = [ a b c d e ]
CPU 1: vec = [ f g h i j ]

then all_gather will produce a vector of strings:

result = [ a b c d e f g h i j ]

If you have a vector<vector<string> >, then all_gather will produce vector<vector<string> > it's not possible to change this behavior.

You begin with a bidimensional vector, then you end with a bidimensional vector. I don't know if it's possible to concatenate the matrix lines with other Boost library, but the collective operations in Boost.MPI are like in the MPI 1.1 standard, nothing else.

Regards,
Jślio.

2011/5/5 Kraus Philipp <philipp.kraus@flashpixx.de>

Am 06.05.2011 um 00:24 schrieb Jślio Hoffimann:

Hi Kraus,

If i understood well, it's not the case for `all_reduce`, you need `all_gather` instead:


The vectors has the same size?

No, they have different sizes. I use all_gather, but I must iterate over each element in the result vector and put the elements into a new vector. I do this at the time:

std::vector< std::vector<std::string> > result;
mpi::all_gather( mpi object, vec, result);

std::vector<std::string> myvec;
foreach( result as res )
     myvec.push_back( foreach in res );

I need the loop after all_gather and my question is: Can I do the loop call into the mpi command, so that I don't have a loop after the gather?

Thx

Phil 


_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users