namespace internal¶
// structs struct MULTINB_DATA template <> struct maxMinValue <double> template <typename DT> struct maxMinValue // unions template <typename MType> union f_cast template <> union f_cast <double> template <> union f_cast <unsigned long long> template <> union f_cast <unsigned int> template <> union f_cast <float>
predictFun¶
#include "xf_data_analytics/classification/decision_tree_predict.hpp"
template < typename MType, unsigned WD, unsigned MAX_FEA_NUM, unsigned MAX_TREE_DEPTH, unsigned MAX_CAT_BITS > void predictFun ( ap_uint <WD> onesample [MAX_FEA_NUM], struct Node <MType> nodes [(MAX_TREE_DEPTH+1)/2+1][MAX_NODES_NUM], ap_uint <MAX_CAT_BITS>& cat_id )
predictFun implements the detailed predict functions.
This function read one sample, and output a category id
Parameters:
MType | The data type of sample |
WD | The width of data type MType, can get by sizeof(MType) |
MAX_FEA_NUM | Max feature num function can support |
MAX_TREE_DEPTH | Max tree depth function can support |
MAX_CAT_BITS | The category max bit number, the max supported category number is (1<<MAX_CAT_BITS) |
onesample | One sample |
nodes | Decision tree (Decision Tree node array) |
cat_id | Category id |
getPredictions¶
#include "xf_data_analytics/classification/decision_tree_predict.hpp"
template < typename MType, unsigned WD, unsigned MAX_FEA_NUM, unsigned MAX_TREE_DEPTH, unsigned MAX_CAT_BITS > void getPredictions ( hls::stream <ap_uint <WD>> dstrm_batch [MAX_FEA_NUM], hls::stream <bool>& estrm_batch, struct Node <MType> nodes [(MAX_TREE_DEPTH+1)/2+1][MAX_NODES_NUM], hls::stream <ap_uint <MAX_CAT_BITS>>& predictionsStrm, hls::stream <bool>& predictionsTag )
getPredictions wrap predictFun to implement batch samples predicion.
This function read sample streams, and output prediction result into a stream
Parameters:
MType | The data type of sample |
WD | The width of data type MType, can get by sizeof(MType) |
MAX_FEA_NUM | Max feature num function can support |
MAX_TREE_DEPTH | Max tree depth function can support |
MAX_CAT_BITS | The category max bit number, the max supported category number is (1<<MAX_CAT_BITS) |
dstrm_batch | Input data streams of ap_uint<WD> |
estrm_batch | End flag stream for input data |
nodes | Decision tree (Decision Tree node array) |
predictionsStrm | Output data streams |
predictionsTagStrm | End flag stream for output |
getTree¶
#include "xf_data_analytics/classification/decision_tree_predict.hpp"
template < typename MType, unsigned MAX_TREE_DEPTH > void getTree ( hls::stream <ap_uint <512>>& tree_strm, hls::stream <bool>& eTag, struct Node <MType> nodes [(MAX_TREE_DEPTH+1)/2+1][MAX_NODES_NUM] )
getTree loads 512-bit decision tree into a list of Node
Note that nodes is duplicated (max_tree_depth+1)/2+1 times for unroll each tree layer in getPredictions.
Parameters:
MType | The data type of sample |
MAX_TREE_DEPTH | Max tree depth function can support |
tree_strm | Decision tree streams |
eTag | End flag stream for decision tree nodes |
nodes | Decision tree (Decision Tree node array) |
initUram¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template <int PU> void initUram ( const int num_of_class, const int num_of_term, ap_uint <72>* lh_vector [PU], ap_uint <96>* prior_vector [PU+1] )
initUram, clear the content of given URAM entitiy
dispatchUnit¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template <int WL> void dispatchUnit ( hls::stream <ap_uint <64>>& i_data_strm, hls::stream <bool>& i_e_strm, hls::stream <MULTINB_DATA> o_data_strm [1<< WL], hls::stream <bool> o_e_strm [1<< WL] )
dispatchUnit, distribute one source data stream to multiple output stream based on its tag
merge8To1¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
void merge8To1 ( hls::stream <MULTINB_DATA>& i0_data_strm, hls::stream <MULTINB_DATA>& i1_data_strm, hls::stream <MULTINB_DATA>& i2_data_strm, hls::stream <MULTINB_DATA>& i3_data_strm, hls::stream <MULTINB_DATA>& i4_data_strm, hls::stream <MULTINB_DATA>& i5_data_strm, hls::stream <MULTINB_DATA>& i6_data_strm, hls::stream <MULTINB_DATA>& i7_data_strm, hls::stream <bool>& i0_e_strm, hls::stream <bool>& i1_e_strm, hls::stream <bool>& i2_e_strm, hls::stream <bool>& i3_e_strm, hls::stream <bool>& i4_e_strm, hls::stream <bool>& i5_e_strm, hls::stream <bool>& i6_e_strm, hls::stream <bool>& i7_e_strm, hls::stream <MULTINB_DATA>& o_data_strm, hls::stream <bool>& o_e_strm )
merge8To1, merge 8 source streams into one destination, read next stream until current stream is empty
counterUnit¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template < typename DT, int DT_WIDTH, int WL > void counterUnit ( const int num_of_class, const int num_of_term, hls::stream <MULTINB_DATA>& i_data_strm, hls::stream <bool>& i_e_strm, hls::stream <MULTINB_DATA>& o_data_strm, hls::stream <bool>& o_e_strm, ap_uint <72>* lh_vector )
counterUnit, count the number of each term for each class, and then store into LH table
collectUnit¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
void collectUnit ( const int num_of_class, hls::stream <MULTINB_DATA>& i_data_strm, hls::stream <bool>& i_e_strm, hls::stream <ap_uint <96>>& o_prior_strm, hls::stream <ap_uint <32>>& o_dist_sum_strm, ap_uint <96>* prior_vector )
collectUnit, count the number of train sample, and get the maximum feature value
priorGather¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template <int PU> void priorGather ( const int num_of_class, hls::stream <ap_uint <96>> i_prior_strm [PU], hls::stream <ap_uint <32>> i_dist_sum_strm [PU], ap_uint <64>& term_sum, ap_uint <96>* prior_prob )
priorGather, calculate the total samples and the maximum feature
trainCore¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template < typename DT, int WL, int PU > void trainCore ( const int num_of_class, const int num_of_term, hls::stream <ap_uint <64>> i_data_strm [PU], hls::stream <bool> i_e_strm [PU], ap_uint <64>& term_sum, ap_uint <72>* lh_vector [PU], ap_uint <96>* prior_vector [PU+1] )
trainCore, the top function of multinomial Naive Bayes training
trainWriteOut¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template < typename DT, int DT_WIDTH, int PU > void trainWriteOut ( const int num_of_class, const int num_of_term, const ap_uint <64> term_sum, hls::stream <int>& o_terms_strm, hls::stream <ap_uint <64>> o_d0_strm [PU], hls::stream <ap_uint <64>> o_d1_strm [PU], ap_uint <72>* lh_vector [PU], ap_uint <96>* prior_vector )
trainWriteOut, calculate the log of prior probablity and likehood probablity, and then write into stream
loadTheta¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template <int GRP_NM> void loadTheta ( const int num_of_class, const int num_of_term, hls::stream <ap_uint <64>>& i_theta_strm, ap_uint <72>* lh_vector [GRP_NM][256/GRP_NM] )
loadTheta, likehood probability matrix loader, it will read num_of_class * num_of_term times
loadPrior¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template <int GRP_NM> void loadPrior ( const int num_of_class, hls::stream <ap_uint <64>>& i_prior_strm, ap_uint <64>* prior_vector [GRP_NM] )
loadPrior, prior probability vector loader, it will read num_of_class times
uramAccess¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template < int CH_NM, int GRP_NM > void uramAccess ( const int num_of_class, const int num_of_term, hls::stream <ap_uint <32>> i_data_strm [CH_NM], hls::stream <bool>& i_e_strm, hls::stream <double> o_prob_strm [GRP_NM][CH_NM], hls::stream <ap_uint <32>> o_data_strm [GRP_NM][CH_NM], hls::stream <bool>& o_e_strm, ap_uint <72>* lh_vector [GRP_NM][256/GRP_NM] )
uramAccess, likehood probability is read line by line, GRP_NM*CH_NM per cycle
finalProb¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template <int GRP_NM> void finalProb ( const int num_of_class, hls::stream <double> i_data_strm [GRP_NM], hls::stream <bool>& i_e_strm, hls::stream <double> o_data_strm [GRP_NM], hls::stream <bool>& o_e_strm, ap_uint <64>* prior_vector [GRP_NM] )
finalProb, calculate the final probability by adding the prior probability for each sample
treeProcess¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template < int CH_NM, int GRP_NM > void treeProcess ( const int num_of_class, const int num_of_term, hls::stream <double> i_prob_strm [GRP_NM][CH_NM], hls::stream <ap_uint <32>> i_data_strm [GRP_NM][CH_NM], hls::stream <bool>& i_e_strm, hls::stream <double> o_data_strm [GRP_NM], hls::stream <bool>& o_e_strm, ap_uint <64>* prior_vector [GRP_NM], ap_uint <64>* result_vector [GRP_NM] )
treeProcess, process core
argmaxClassifiler¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template <int GRP_NM> void argmaxClassifiler ( const int num_of_class, hls::stream <double> i_data_strm [GRP_NM], hls::stream <bool>& i_e_strm, hls::stream <ap_uint <10>>& o_class_strm, hls::stream <bool>& o_e_strm )
argmaxClassifiler, argmax function
predictCore¶
#include "xf_data_analytics/classification/naive_bayes.hpp"
template < int CH_NM, int GRP_NM > void predictCore ( const int num_of_class, const int num_of_term, hls::stream <ap_uint <32>> i_data_strm [CH_NM], hls::stream <bool>& i_e_strm, hls::stream <ap_uint <10>>& o_class_strm, hls::stream <bool>& o_e_strm, ap_uint <72>* lh_vector [GRP_NM][256/GRP_NM], ap_uint <64>* prior_vector [GRP_NM], ap_uint <64>* result_vector [GRP_NM] )
predictCore, the top function of multinomial Naive Bayes Prediction
transPredictions¶
#include "xf_data_analytics/classification/svm_predict.hpp"
template < typename MType, unsigned WD > void transPredictions ( hls::stream <MType> retStrm [1], hls::stream <bool>& eRetStrm, hls::stream <ap_uint <1>>& predictionsStrm, hls::stream <bool>& predictionsTag )
transPredictions transform predicion type to ap_uint.
This function read prediction calculate result stream, and output prediction class tag into a stream
Parameters:
MType | The data type of sample |
WD | The width of data type MType, can get by sizeof(MType) |
retStrm | Input calculate result streams of MType |
eRetStrm | End flag stream for input data |
predictionsStrm | Output class tag streams |
predictionsTagStrm | End flag stream for output |
getPredictions¶
#include "xf_data_analytics/classification/svm_predict.hpp"
template < typename MType, unsigned WD, unsigned StreamN, unsigned SampleDepth > void getPredictions ( const int cols, hls::stream <MType> sample_strm [StreamN], hls::stream <bool>& e_sample_strm, MType weight [1][StreamN][SampleDepth], hls::stream <ap_uint <1>>& predictionsStrm, hls::stream <bool>& predictionsTag )
getPredictions implement samples predicion.
This function read sample streams, and output prediction result into a stream
Parameters:
MType | The data type of sample |
WD | The width of data type MType, can get by sizeof(MType) |
StreamN | The stream number of input sample stream vector |
SampleDepth | stream depth number of one input sample |
cols | colum number of input data sample |
sample_strm | Input data streams of MType |
e_sample_strm | End flag stream for input data |
weight | svm weight array |
predictionsStrm | Output data streams |
predictionsTagStrm | End flag stream for output |
getWeight¶
#include "xf_data_analytics/classification/svm_predict.hpp"
template < typename MType, unsigned StreamN, unsigned SampleDepth > void getWeight ( hls::stream <ap_uint <512>>& weight_strm, hls::stream <bool>& eTag, MType weight [1][StreamN][SampleDepth] )
getWeight loads 512-bit svm weight
Parameters:
MType | The data type of sample |
StreamN | The stream number of input sample stream vector |
SampleDepth | stream depth number of one input sample |
weight_strm | svm weight streams |
eTag | End flag stream for svm weight |
weight | svm array) |