Uint MergedParallelDistribution::subhash_of_obj(const Uint obj) const { Uint part = part_of_obj(obj); Uint start_idx_of_obj_part = start_idx_in_part( part ); Uint offset = obj - start_idx_of_obj_part; Uint psize = 0; Uint i=0; boost_foreach(Handle< ParallelDistribution > hash, m_subhash) { psize += hash->nb_objects_in_part(part); if (offset < psize) return i; ++i; }
Uint CMixedHash::subhash_of_obj(const Uint obj) const { Uint part = part_of_obj(obj); Uint start_idx_of_obj_part = start_idx_in_part( part ); Uint offset = obj - start_idx_of_obj_part; Uint psize = 0; Uint i=0; boost_foreach(CHash::ConstPtr hash, m_subhash) { psize += hash->nb_objects_in_part(part); if (offset < psize) return i; ++i; }
Uint MergedParallelDistribution::start_idx_in_proc(const Uint proc) const { Uint part_begin = m_nb_parts/PE::Comm::instance().size()*proc; return start_idx_in_part(part_begin); }
Uint MergedParallelDistribution::nb_objects_in_part(const Uint part) const { return end_idx_in_part(part) - start_idx_in_part(part); }
Uint CMixedHash::start_idx_in_proc(const Uint proc) const { Uint part_begin = m_nb_parts/Comm::PE::instance().size()*proc; return start_idx_in_part(part_begin); }
Uint CMixedHash::nb_objects_in_part(const Uint part) const { return end_idx_in_part(part) - start_idx_in_part(part); }