File clique_cache.hpp#

namespace busclique

Variables

const vector<vector<size_t>> empty_emb#
class maxcache
#include <clique_cache.hpp>

Public Functions

inline maxcache(size_t r, size_t c, size_t *m)#
inline void setmax(size_y y, size_x x, size_t s, corner c)#
inline size_t score(size_y y, size_x x) const#
inline corner corners(size_y y, size_x x) const#

Public Members

const size_y rows#
const size_x cols#

Private Functions

inline size_t index(size_y y, size_x x) const#

Private Members

size_t *mem#
class zerocache
#include <clique_cache.hpp>

Public Functions

inline constexpr size_t score(size_y, size_x) const#
template<typename topo_spec>
class clique_iterator
#include <clique_cache.hpp>

Public Functions

inline clique_iterator(const cell_cache<topo_spec> &c, const clique_cache<topo_spec> &q)#
inline bool next(vector<vector<size_t>> &e)#

Private Functions

inline bool advance()#
inline bool grow_stack()#

Private Members

const cell_cache<topo_spec> &cells#
const clique_cache<topo_spec> &cliq#
size_t width#
vector<std::tuple<size_y, size_x, corner>> basepoints#
vector<std::tuple<size_t, size_y, size_x, corner>> stack#
vector<vector<size_t>> emb#
template<typename topo_spec>
class clique_cache
#include <clique_cache.hpp>

Public Functions

clique_cache(const clique_cache&) = delete#
clique_cache(clique_cache&&) = delete#
inline clique_cache(const cell_cache<topo_spec> &c, const bundle_cache<topo_spec> &b, size_t w)#
template<typename C>
inline clique_cache(const cell_cache<topo_spec> &c, const bundle_cache<topo_spec> &b, size_t w, C &check)#
inline ~clique_cache()#
inline maxcache get(size_t i) const#
inline void print()#
inline bool extract_solution(vector<vector<size_t>> &emb) const#

Private Functions

inline size_t memrows(size_t i) const#
inline size_t memcols(size_t i) const#
inline size_t memsize(size_t i) const#
inline size_t memsize() const#
template<typename C>
inline void compute_cache(C &check)#
template<typename T, typename C, typename ...Corners>
inline void extend_cache(const T &prev, size_y h, size_x w, C &check, Corners... corners)#
template<typename T, typename C, typename ...Corners>
inline void extend_cache(const T &prev, maxcache &next, size_y y0, size_y y1, size_x x0, size_x x1, C &check, corner c, Corners... corners)#
template<typename T, typename C>
inline void extend_cache(const T &prev, maxcache &next, size_y y0, size_y y1, size_x x0, size_x x1, C &check, corner c)#
inline corner inflate_first_ell(vector<vector<size_t>> &emb, size_y &y, size_x &x, size_y h, size_x w, corner c) const#

Private Members

const cell_cache<topo_spec> &cells#
const bundle_cache<topo_spec> &bundles#
const size_t width#
size_t *mem#

Private Static Functions

static inline constexpr bool nocheck(size_y, size_x, size_y, size_y, size_x, size_x)#

Friends

friend class clique_iterator< topo_spec >
template<typename topo_spec>
class clique_yield_cache
#include <clique_cache.hpp>

Public Functions

inline clique_yield_cache(const cell_cache<topo_spec> &cells)#
inline const vector<vector<vector<size_t>>> &embeddings()#

Public Static Functions

static inline void get_length_range(const pegasus_spec &topo, size_t width, size_t &min_length, size_t &max_length)#

Private Functions

inline size_t compute_length_bound(const zephyr_spec &topo)#
inline size_t compute_length_bound(const pegasus_spec &topo)#
inline size_t compute_length_bound(const chimera_spec &topo)#
inline size_t emb_max_length(const vector<vector<size_t>> &emb) const#
inline void process_cliques(const clique_cache<topo_spec> &cliques)#
inline void compute_cache_width_1(const cell_cache<topo_spec> &cells, const bundle_cache<topo_spec> &bundles)#
inline void compute_cache_width_gt_1(const cell_cache<pegasus_spec> &cells, const bundle_cache<pegasus_spec> &bundles)#
inline void compute_cache_width_gt_1(const cell_cache<chimera_spec> &cells, const bundle_cache<chimera_spec> &bundles)#
inline void compute_cache_width_gt_1(const cell_cache<zephyr_spec> &cells, const bundle_cache<zephyr_spec> &bundles)#
inline void compute_cache(const cell_cache<zephyr_spec> &cells)#
inline void compute_cache(const cell_cache<chimera_spec> &cells)#
inline void compute_cache(const cell_cache<pegasus_spec> &cells)#

Private Members

const size_t length_bound#
vector<size_t> clique_yield#
vector<vector<vector<size_t>>> best_embeddings#