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"
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 |
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 |
class xf::database::gqe::AggrCommand¶
#include "xf_database/aggr_command.hpp"
Methods¶
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 |