class xf::data_analytics::text::re::RegexEngine

#include "xf_data_analytics/text/regex_engine.hpp"


Offload regex match with FPGA.



RegexEngine (
    const std::string& xclbin,
    const int dev_index = 0,
    const int instr_depth = 4096,
    const int char_class_num = 128,
    const int capture_grp_num = 512,
    const int msg_size = 4096,
    const int max_slice_size = 5242880,
    const int max_slice_num = 256

Default constructor for loading and programming binary.


xclbin Path to FPGA binary.
dev_index The index of Xilinx OpenCL device.
instr_depth Max number of instructions.
char_class_num Max number of character classes.
capture_grp_num Max number of capturing groups.
msg_size Max size for each message, in number of bytes. max_slice_size Max message slice size, in number of bytes.
max_slice_num Max message slice number.


~RegexEngine ()

Default de-constructor for releasing program/command-queue/contect.


ErrCode compile (std::string pattern)

Pre-compiles pattern and gives error code correspondingly.


pattern Input regular expression


uint32_t getCpgpNm () const

Gets the number of capturing groups for current pattern.


ErrCode match (
    uint32_t total_lnm,
    const uint64_t* msg_buff,
    uint32_t* offt_buff,
    uint16_t* len_buff,
    uint32_t* out_buff

Prepares configurations for RegexEngineKernel , and performs the actual matching process.


total_lnm Total number of lines in current message block
msg_buff Buffer for saving messages line-by-line, pads white-space if not hit the boundary of 64-bit
offt_buff Buffer for saving starting address of each line, aligned with 64-bit
len_buff Buffer for saving length of each message, in byte
out_buff Buffer for saving output results including match flag & corresponding start/end offset address for each capturing group