
Hi All, I have a problem with a multiindex ordered_non_unique index becoming corrupted :( I am working with a multiindex that stores class objects of type Individual: class Individual { double I_; double id_; public: double getId() const; double getI() const; void setId(const std::string id); void setI(const double I); } boost::multi_index_container< Individual, indexed_by< random_access< tag<bySeq> >, hashed_unique< tag<byId>, const_mem_fun<Individual,string,&Individual::getId> >, ordered_non_unique<tag<byI>, const_mem_fun<Individual,double,&Individual::getI> > > > I have an algorithm that works on these data, using Individual::I to calculate a summary value across the whole dataset. An Individual i is then chosen at random, and i.I updated using the multiindex::modify method with a functor: struct modifyI { modifyI(double newI) : newI_(newI) {} void operator()(Individual& i) { i.setI(newI_); } private: double newI_; }; This calculation is then repeated many times. The actual calculation is done in parallel using MPI (Boost::MPI on top of OpenMPI), with the final reduction being broadcast to all processes. This enables each processor to make the same change to its copy of the multiindex. In *theory* this should mean that each process has a complete replicate of the multiindex. However, I am finding that the ordered_non_unique index is becoming corrupted in that the ordering (strict less than on Individual::I) gets messed up for a few (c. 2 or 3) of the elements. Essentially, it appears that small blocks of the index get swapped round. This is not occurring simultaneously on all processes, which is odd because the same multiindex::modify method is called for each process with the same arguments. Can anyone suggest a way I can move forward on trying to debug this? Thanks, Chris -- Dr Chris Jewell Department of Statistics University of Warwick Coventry CV4 7AL UK Tel: +44 (0)24 7615 0778