1#ifndef included_AMP_MIS2Aggregator_H_
2#define included_AMP_MIS2Aggregator_H_
4#include "AMP/solvers/amg/AggregationSettings.h"
5#include "AMP/solvers/amg/Aggregator.h"
25 template<
typename Config>
29 template<
typename Config>
31 const uint64_t num_gbl,
32 typename Config::lidx_t *worklist,
33 typename Config::lidx_t worklist_len,
42 AMP_ASSERT( num_global < ( std::numeric_limits<uint64_t>::max() - 33 ) );
43 const auto id_shift = []( uint64_t ng ) -> uint8_t {
50 return std::numeric_limits<uint64_t>::max() >> ( 64 - id_shift );
56 const uint64_t conn_mask = ( (uint64_t) 31 ) << 59;
57 return ~( conn_mask | id_mask );
63 static constexpr uint64_t
IN = std::numeric_limits<uint64_t>::max();
64 static constexpr uint64_t
OUT = 0;
An concrete class for dealing with dense serial matrices.
#define AMP_ASSERT(EXP)
Assert error.
int classifyVertices(std::shared_ptr< LinearAlgebra::CSRLocalMatrixData< Config > > A, const uint64_t num_gbl, typename Config::lidx_t *worklist, typename Config::lidx_t worklist_len, uint64_t *Tv, uint64_t *Tv_hat)
int assignLocalAggregates(std::shared_ptr< LinearAlgebra::Matrix > A, int *agg_ids) override
static constexpr int INVALID
static constexpr int UNASSIGNED
MIS2Aggregator(const CoarsenSettings &settings)
uint64_t getHashMask(uint64_t id_mask) const
static constexpr uint64_t OUT
static constexpr uint64_t IN
uint64_t getIdMask(uint64_t num_global) const
int assignLocalAggregates(std::shared_ptr< LinearAlgebra::CSRMatrix< Config > > A, int *agg_ids)