GQE Kernel Configuration APIs

These APIs are software APIs that can be used to genreate configuration bits for hardware kernels listed above.

class xf::database::gqe::JoinCommand

#include "xf_database/join_command.hpp"

Overview

Class for generating configuration bits of gqeJoin kernel.


Methods

JoinCommand

JoinCommand ()

construct of JoinCommand .

default: join : on join type : INNER_JOIN bypass : off aggr : off dual key : off

Scan

void Scan (
    int table_id,
    std::vector <int8_t> index
    )

scan valid cols.

Parameters:

table_id 0 for left table, 1 for right table
index  
valid input column ids

setBypassOn

void setBypassOn ()

set bypass on.

setAggrOn

void setAggrOn ()

set aggregation on.

not support in current join kernel

setDualKeyOn

void setDualKeyOn ()

set dual key join on.

setJoinType

void setJoinType (int jointype)

set join type.

Parameters:

jointype Join type, default is INNER_JOIN

setWriteCol

void setWriteCol (std::vector <int8_t> index)

set output column ids.

Parameters:

index output column ids

setShuffle0

void setShuffle0 (
    int table_id,
    std::vector <int8_t> index
    )

set shuffle0 column ids.

Parameters:

table_id 0 for left table, 1 for right table
index shuffle0 key list, if filter on, move filter keys to first 4 locations

setShuffle1

void setShuffle1 (
    int table_id,
    std::vector <int8_t> index
    )

set shuffle1 column ids.

Parameters:

table_id 0 for left table, 1 for right table
index shuffle1 key list, if join on, move join key(s) to first 1 (2 when dual key) location(s)

setShuffle2

void setShuffle2 (std::vector <int8_t> index)

set shuffle2 column ids.

Parameters:

index shuffle2 key list, for evaluation 1, move evaluation keys to first 4 locations

setShuffle3

void setShuffle3 (std::vector <int8_t> index)

set shuffle3 column ids.

Parameters:

index shuffle3 key list, for evaluation 2, move evaluation keys to first 4 locations

setShuffle4

void setShuffle4 (std::vector <int8_t> index)

set shuffle4 column ids.

Parameters:

index aggregation key list

setEvaluation

setEvaluation overload (1)
void setEvaluation (
    int eval_id,
    std::string s0,
    std::vector <int32_t> index
    )

set Evaluation string.

Parameters:

eval_id  
most two evaluations
s0  
evaluation string for special strm format
index  
evaluation constants for each strm, default 0
setEvaluation overload (2)
void setEvaluation (
    int eval_id,
    std::string eval_str
    )

set Evaluation string.

Parameters:

eval_id  
most two evaluations
eval_str  
evaluation expression string

setFilter

setFilter overload (1)
void setFilter (
    int table_id,
    std::string filter_string
    )

set Filter string.

The string uses a , b , c , d to refer to first to the fourth column, and supports comparison and logical operator like C++. Parentheses can be used to group logic, but notice that the underlying hardware module does not support comparing one column with multiple constant boundaries in OR relationship. Integral constants will be extracted from expression.

For example, an expression could be (a < 10 && b < 20) || (c >= d) .

Parameters:

table_id  
0 for left table, 1 for right table
filter_string filter expression string

getConfigBits

ap_uint <512>* getConfigBits () const

return config bit array.

class xf::database::gqe::AggrCommand

#include "xf_database/aggr_command.hpp"

Overview

Class for generating configuration bits of gqeAggr kernel.


Methods

AggrCommand

AggrCommand ()

construct of AggrCommand .

Scan

void Scan (std::vector <int8_t> index)

scan valid cols and shuffle for evaluation 1.

Parameters:

index  
input valid column ids

setEvaluation

setEvaluation overload (1)
void setEvaluation (
    int eval_id,
    std::string s0,
    std::vector <int32_t> index,
    int post_div = nosf
    )

set Evaluation string.

Parameters:

eval_id  
most support two evaluations
s0  
evaluation string for special strm format (not support ‘/’)
index  
evaluation constants for each strm, default 0
post_div  
post division alu operation, nosf for no division, sf10 for “a/10”, sf100 for “a/100”, sf1k for “a/1000”, sf10k for “a/10000” (a is result of evaluation expression)
setEvaluation overload (2)
void setEvaluation (
    int eval_id,
    std::string eval_str
    )

set Evaluation string.

Parameters:

eval_id  
most two evaluations
eval_str  
evaluation expression string

setFilter

setFilter overload (1)
void setFilter (std::string filter_string)

set Filter string.

The string uses a , b , c , d to refer to first to the fourth column, and supports comparison and logical operator like C++. Parentheses can be used to group logic, but notice that the underlying hardware module does not support comparing one column with multiple constant boundaries in OR relationship. Integral constants will be extracted from expression.

For example, an expression could be (a < 10 && b < 20) || (c >= d) .

Parameters:

filter_string filter expression string

setShuffle0

void setShuffle0 (std::vector <int8_t> index)

set shuffle0 column ids.

Parameters:

index shuffle0 key list,move evaluation keys to first 4 locations

setShuffle1

void setShuffle1 (std::vector <int8_t> index)

set shuffle1 column ids.

Parameters:

index shuffle1 key list,move filter keys to first 4 locations

setShuffle2

void setShuffle2 (std::vector <int8_t> index)

set shuffle2 column ids.

Parameters:

index set column indexes of keys

setShuffle3

void setShuffle3 (std::vector <int8_t> index)

set shuffle3 column ids.

Parameters:

index set column indexes of payloads

setGroupAggr

void setGroupAggr (
    int ind,
    ap_uint <4> aggr_op
    )

set Group Aggregation type of setting index

Parameters:

ind set index of column
aggr_op Aggregation type of setting index

setGroupAggrs

void setGroupAggrs (std::vector <ap_uint <4>> index)

set Group Aggregation types

Parameters:

index list of Aggregation types, starting from the first column, align with columns in shuffle3

setMerge

void setMerge (
    int m_id,
    std::vector <uint8_t> index
    )

set Merge column index in setting round of merge

merge flow : four list : key, count, aggr_l and aggr_h, each one has size 8 key is aligned with shuffle2, count, aggr_l and aggr_h are aligned with shuffle3 and setGroupAggr merge 0,1,2 merge key into the other three merge 3,4 merge count pld into other two

Parameters:

m_id round id of column merge
index merge colum list in current round

columnMerge

void columnMerge (std::vector <ap_uint <4>> index)

set Merge codes in each round of merge

merge flow : four list : key, count, aggr_h, aggr_l (each one has size 8) key is aligned with shuffle2, count, aggr_h and aggr_l are aligned with shuffle3 and setGroupAggr merge 0,1,2 merge key into the other three merge 3,4 merge count pld into other two

Parameters:

index coded merging indexes

setDirectAggrs

void setDirectAggrs (std::vector <uint8_t> index)

set demux direct aggregations

Parameters:

index columns of using direct aggregations

setWriteCol

void setWriteCol (std::vector <int8_t> index)

set output column ids.

Parameters:

index output column ids

getConfigBits

ap_uint <W>* getConfigBits () const

return config bit array.

getConfigOutBits

ap_uint <W>* getConfigOutBits ()

return config out bit array.