class xf::database::gqe::KernelCommand

#include "xf_database/kernel_command.hpp"

Overview

Class for generating configuration bits of gqePart , gqeJoin and gqeFilter kernels.


Methods

KernelCommand

KernelCommand ()

constructor of KernelCommand class. The kernel command used buffer is allocated on host. Some default settings are provided.

setBypassOn

void setBypassOn (bool trigger)

set bypass on.

Parameters:

trigger 0 for off, 1 for on.

setJoinOn

void setJoinOn (bool trigger)

set join on.

Parameters:

trigger 0 for off, 1 for on.

setJoinType

void setJoinType (int join_type)

set join type.

Parameters:

join_type hash join type, 0 for INNER, 1 for SEMI, 2 for ANTI.

setJoinAppendMode

void setJoinAppendMode (int ap_mode)

set join append mode.

Parameters:

ap_mode append mode.

setBloomfilterOn

void setBloomfilterOn (bool trigger)

set bloom-filter on.

Parameters:

bf_size size of bloom-filter in bits, we need 35 bits to represent a range between 1 to 16 Gbits.

setBloomfilterSize

void setBloomfilterSize (ap_uint <36> bf_size)

set bloom-filter size.

Parameters:

bf_size size of bloom-filter in bits, we need 35 bits to represent a range between 1 to 16 Gbits.

setPartOn

void setPartOn (int trigger)

set partition on.

Parameters:

trigger 0 for off, 1 for on.

setLogPart

void setLogPart (int log_part)

set log of partition number.

Parameters:

log_part log of partition number.

setAggrOn

void setAggrOn (bool trigger = true)

set aggregate on.

Parameters:

trigger false for off, true for on.

setDualKeyOn

void setDualKeyOn (bool trigger = true)

set dual key on.

Parameters:

trigger false for using 1 column as key, true for using two.

setJoinBuildProbe

void setJoinBuildProbe (bool flag)

set join build probe flag.

Parameters:

flag 0 for build, 1 for probe.

setBloomfilterBuildProbe

void setBloomfilterBuildProbe (bool flag)

set bloom filter build probe flag.

Parameters:

flag 0 for build, 1 for probe.

setScanColEnable

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

enables input columns for gqeKernel.

Parameters:

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

setWriteColEnable

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

enables output columns for gqeKernel.

Parameters:

krn_type 0 for gqeJoin, 1 for gqePart, 2 for gqeFilter
table_id 0 for left table, 1 for right table
index output column ids

setRowIDValidEnable

void setRowIDValidEnable (
    int table_id,
    bool gen_rowID_en,
    bool valid_en
    )

set gen_rowIDEnable and validEnable flag.

Parameters:

table_id 0 for left table, 1 for right table.
gen_rowID_en enable flag for using GQE to generate row IDs internally. 1 for enable, 0 for disable.
valid_en enable flag for getting valid bits from off-chip memory or enabing every row internally. 1 for valid bits from off-chip memory, 0 for enabling every row.

setFilter

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.