#include "xf_data_analytics/clustering/kmeansPredict.hpp"
template < typename DT, int Dim, int Kcluster, int uramDepth, int KU, int DV > void kMeansPredict ( hls::stream <ap_uint <sizeof (DT)*8>> sampleStrm [DV], hls::stream <bool>& endSampleStrm, ap_uint <sizeof (DT)*8*DV> centers [KU][uramDepth], const int dims, const int kcluster, hls::stream <ap_uint <32>>& tagStrm, hls::stream <bool>& endTagStrm )
kMeansPredict predicts cluster index for each sample. In order to achive to acceleration, please make sure partition 1-dim of centers.
Parameters:
DT | data type, supporting float and double |
Dim | the maximum number of dimensions,dynamic number of dimension should be not greater than the maximum. |
Kcluster | the maximum number of cluster,dynamic number of cluster should be not greater than the maximum. |
uramDepth | the depth of uram where centers are stored. uramDepth should be not less than ceiling(Kcluster/KU)
|
KU | unroll factor of Kcluster, KU centers are took part in calculating distances concurrently with one sample. After Kcluster/KU+1 times at most, ouput the minimum distance of a sample and Kcluster centers. |
DV | unroll factor of Dim, DV elements in a center are took part in calculating distances concurrently with one sample. |
sampleStrm | input sample streams, a sample needs ceiling(dims/DV) times to read. |
endSampleStrm | the end flag of sample stream. |
centers | an array stored centers, user should partition dim=1 in its defination. |
dims | the number of dimensions. |
kcluster | the number of clusters. |
tagStrm | tag stream, label a cluster ID for each sample. |
endTagStrm | end flag of tag stream. |