11 template <
typename raster_t>
16 using raster_type = raster_t;
18 using view_type =
typename raster_type::view_type;
19 using constview_type =
typename raster_type::constview_type;
21 using cell_type =
typename raster_type::cell_type;
23 using value_type =
typename cell_type::value_type;
25 using slice_type =
typename raster_type::slice_type;
27 using shape_type =
typename raster_type::shape_type;
29 using layout_type =
typename raster_type::layout_type;
31 using index_type =
typename raster_type::index_type;
33 using size_type =
typename raster_type::size_type;
36 using tile_type = pyre::grid::grid_t<cell_type,
38 pyre::memory::view_t<cell_type>>;
43 inline void addReferenceTile(size_type pid,
const constview_type & ref);
45 inline void addTargetTile(size_type pid,
const constview_type & tgt);
48 inline auto adjust() ->
const value_type *;
51 inline auto pairs() const -> size_type;
52 inline auto arena() const -> const cell_type *;
55 inline
void dump() const;
60 inline Sequential(size_type pairs,
61 const layout_type & refLayout, const layout_type & tgtLayout,
62 size_type refineFactor=2, size_type refineMargin=8,
63 size_type zoomFactor=4);
68 inline auto _push() const -> cell_type *;
70 inline auto _detect(const cell_type * cArena,
71 size_type refDim, size_type tgtDim) const -> value_type *;
73 inline auto _refStats(value_type * rArena,
74 size_type refDim, size_type tgtDim) const -> value_type *;
76 inline auto _sat(const value_type * rArena,
77 size_type refDim, size_type tgtDim) const -> value_type *;
80 inline auto _tgtStats(const value_type * sat,
81 size_type refDim, size_type tgtDim, size_type corDim
82 ) const -> value_type *;
84 inline auto _correlate(const value_type * rArena,
85 const value_type * refStats, const value_type * tgtStats,
86 size_type refDim, size_type tgtDim, size_type corDim
87 ) const -> value_type *;
89 inline auto _maxcor(const value_type * gamma, size_type corDim) const ->
int *;
91 inline
void _nudge(
int * locations, size_type refDim, size_type tgtDim) const;
93 inline auto _refinedArena() const -> cell_type *;
95 inline
void _refRefine(cell_type * coarseArena, cell_type * refinedArena) const;
97 inline
void _tgtMigrate(cell_type * coarseArena,
int * locations,
98 cell_type * refinedArena) const;
100 inline
void _tgtRefine(cell_type * refinedArena) const;
102 inline
void _deramp(cell_type * arena) const;
104 inline auto _zoomcor(value_type * gamma) const -> value_type *;
106 inline auto _offsetField(const
int * maxcor, const
int * zoomed) -> const value_type *;
109 inline auto _zoomcor_r2r(value_type * gamma) const -> value_type *;
115 const size_type _pairs;
116 const size_type _refineFactor;
117 const size_type _refineMargin;
118 const size_type _zoomFactor;
121 const layout_type _refLayout;
123 const layout_type _tgtLayout;
125 const layout_type _corLayout;
127 const layout_type _refRefinedLayout;
129 const layout_type _tgtRefinedLayout;
131 const layout_type _corRefinedLayout;
133 const layout_type _corZoomedLayout;
136 const size_type _refCells;
138 const size_type _tgtCells;
140 const size_type _corCells;
142 const size_type _refRefinedCells;
144 const size_type _tgtRefinedCells;
147 const size_type _refFootprint;
149 const size_type _tgtFootprint;
151 const size_type _corFootprint;
153 const size_type _refRefinedFootprint;
155 const size_type _tgtRefinedFootprint;
158 cell_type * const _arena;
160 value_type * const _offsets;