DP-HLS
 All Classes Namespaces Files Functions Variables Typedefs Macros Pages
Align::Fixed Namespace Reference

This namespace contains functions to define the core architectures used in the fixed banding alignment kernel. More...

Functions

void AlignStatic (const char_t(&querys)[MAX_QUERY_LENGTH], const char_t(&references)[MAX_REFERENCE_LENGTH], const idx_t query_length, const idx_t reference_length, const Penalties &penalties, idx_t &tb_i, idx_t &tb_j, tbr_t(&tb_out)[MAX_REFERENCE_LENGTH+MAX_QUERY_LENGTH])
 Perform Pairwise alignment for two sequences, in fixed banding with virtual coordinates. More...
 
void ChunkCompute (const idx_t chunk_row_offset, const input_char_block_t &query, const char_t(&reference)[MAX_REFERENCE_LENGTH], const chunk_col_scores_inf_t &init_col_scr, score_vec_t(&init_row_scr)[MAX_REFERENCE_LENGTH], idx_t p_cols, const idx_t ck_idx, idx_t &l_lim_reg, idx_t &u_lim_reg, const bool(&col_pred)[PE_NUM], const idx_t global_query_length, const idx_t local_query_length, const idx_t reference_length, const Penalties &penalties, ScorePack(&max)[PE_NUM], tbp_t(&chunk_tbp_out)[PE_NUM][TBMEM_SIZE])
 Compute the traceback pointers for a chunk of the size PE_NUM * REFERENCE_LENGTH, with fixed banding and virtual coordinates. More...
 
void MapPredicate (const idx_t(&local_l_lim)[PE_NUM], const idx_t(&local_u_lim)[PE_NUM], const idx_t(&virtual_cols)[PE_NUM], const bool(&col_pred)[PE_NUM], bool(&predicate)[PE_NUM])
 Logics to map the global coordinates of a wavefront of PE to their prediate values. MapPredicateSquare is a function F: (pe_row: int, pe_col: int) -> (predicate_balue: boolean) It's unrolled for PE_NUM applying to each PE. More...
 
template<int PE_NUM_, int MAX_QUERY_LENGTH_>
void PrepareLocals (const char_t(&query)[MAX_QUERY_LENGTH_], const score_vec_t(&init_col_scr)[MAX_QUERY_LENGTH_], char_t(&local_query)[PE_NUM_], chunk_col_scores_inf_t &init_col_scr_local, bool(&col_pred)[PE_NUM_], const idx_t local_query_len, const idx_t idx)
 

Detailed Description

This namespace contains functions to define the core architectures used in the fixed banding alignment kernel.

Function Documentation

void Align::Fixed::AlignStatic ( const char_t(&)  querys[MAX_QUERY_LENGTH],
const char_t(&)  references[MAX_REFERENCE_LENGTH],
const idx_t  query_length,
const idx_t  reference_length,
const Penalties &  penalties,
idx_t &  tb_i,
idx_t &  tb_j,
tbr_t(&)  tb_out[MAX_REFERENCE_LENGTH+MAX_QUERY_LENGTH] 
)

Perform Pairwise alignment for two sequences, in fixed banding with virtual coordinates.

Parameters
query,:Query sequence buffer.
reference,:Reference sequence buffer.
query_length,:Length of the query.
reference_length,:Length of the reference.
tb_streams,:Output traceback path.
void Align::Fixed::ChunkCompute ( const idx_t  chunk_row_offset,
const input_char_block_t query,
const char_t(&)  reference[MAX_REFERENCE_LENGTH],
const chunk_col_scores_inf_t init_col_scr,
score_vec_t(&)  init_row_scr[MAX_REFERENCE_LENGTH],
idx_t  p_cols,
const idx_t  ck_idx,
idx_t &  l_lim_reg,
idx_t &  u_lim_reg,
const bool(&)  col_pred[PE_NUM],
const idx_t  global_query_length,
const idx_t  local_query_length,
const idx_t  reference_length,
const Penalties &  penalties,
ScorePack(&)  max[PE_NUM],
tbp_t(&)  chunk_tbp_out[PE_NUM][TBMEM_SIZE] 
)

Compute the traceback pointers for a chunk of the size PE_NUM * REFERENCE_LENGTH, with fixed banding and virtual coordinates.

Parameters
chunk_row_offset: The row offset in the whole traceback matrix the beginning of the chunk.
query: Query sequence with length PE_NUM.
init_col_scr: Initial score for the first column of this chunk.
query_length: Length of the query < PE_NUM.
reference_length: Length of the reference < MAX_REFERENCE_LENGTH.
max: Score pack of the maximium score of this chunk.
void Align::Fixed::MapPredicate ( const idx_t(&)  local_l_lim[PE_NUM],
const idx_t(&)  local_u_lim[PE_NUM],
const idx_t(&)  virtual_cols[PE_NUM],
const bool(&)  col_pred[PE_NUM],
bool(&)  predicate[PE_NUM] 
)

Logics to map the global coordinates of a wavefront of PE to their prediate values. MapPredicateSquare is a function F: (pe_row: int, pe_col: int) -> (predicate_balue: boolean) It's unrolled for PE_NUM applying to each PE.

Parameters
icsGlobal Row Coordinates of a Wavefront of PE.
jcsGlobal Column Coordinates of a Wavefront of PE.
ref_lenActual Reference Length.
predicatePredicate Array.
template<int PE_NUM_, int MAX_QUERY_LENGTH_>
void Align::Fixed::PrepareLocals ( const char_t(&)  query[MAX_QUERY_LENGTH_],
const score_vec_t(&)  init_col_scr[MAX_QUERY_LENGTH_],
char_t(&)  local_query[PE_NUM_],
chunk_col_scores_inf_t init_col_scr_local,
bool(&)  col_pred[PE_NUM_],
const idx_t  local_query_len,
const idx_t  idx 
)