template class xf::hpc::mlp::Fcn¶
#include "fcn.hpp"
Overview¶
Fcn class, implement C = f(A*B+X)
Parameters:
t_FloatType | matrix A B entry data type |
t_XDataType | matrix X entry data type |
t_DdrWidth | number of matrix elements in one memory word |
t_XDdrWidth | number of matrix elements in one memory word |
t_aColMemWords | the number of memory words in one row of the matrix A buffer |
t_aRowMemWords | the number of memory words in one column of the matrix A buffer |
t_bColMemWords | the number of memory words in one row of the matrix B buffer |
t_maxWSize | the maximun Weight matrix size 0 for unlimited size |
t_maxBSize | the maximun Bias vector size 0 for unlimited size |
template < typename t_FloatType, typename t_XDataType, unsigned int t_DdrWidth, unsigned int t_XDdrWidth, unsigned int t_aColMemWords = 1, unsigned int t_aRowMemWords = 1, unsigned int t_bColMemWords = 1, unsigned int t_maxWSize = 0, unsigned int t_maxBSize = 0 > class Fcn // typedefs typedef GemmKernel <t_FloatType, t_XDataType, t_DdrWidth, t_XDdrWidth, t_aColMemWords, t_aRowMemWords, t_bColMemWords>::DdrWideType DdrWideType typedef GemmKernel <t_FloatType, t_XDataType, t_DdrWidth, t_XDdrWidth, t_aColMemWords, t_aRowMemWords, t_bColMemWords>::DdrStream DdrStream typedef FcnArgs FcnArgsType typedef DdrWideType::t_TypeInt DdrIntType
Methods¶
FcnActivation¶
void FcnActivation ( DdrStream& p_inS, DdrStream& p_outS, unsigned int p_blocks, t_FloatType (*) (t_FloatType) f_act, int16_t p_args )
FcnActivation applies activation function to the FCN output.
Parameters:
p_inS | is the input stream from FCN |
p_outS | is the output stream after applying activation |
p_blocks | is the number of blocks to be processed |
f_act | is the activation function |
p_args | is the arguments passed to the activation function |
FcnBlocks¶
void FcnBlocks ( DdrIntType* p_aAddr, DdrIntType* p_bAddr, DdrIntType* p_cAddr, DdrIntType* p_xAddr, unsigned int p_aColBlocks, unsigned int p_aRowBlocks, unsigned int p_bColBlocks, unsigned int p_aLd, unsigned int p_bLd, unsigned int p_cLd, unsigned int p_xLd, unsigned int p_transpBlocks, t_FloatType (*) (t_FloatType) f_act, FcnArgsType& p_Args )
FcnBlocks runs the FCN for input matrices.
Parameters:
p_aAddr | the base address of matrix A in external memory |
p_bAddr | the base address of matrix B in external memory |
p_cAddr | the base address of matrix C in external memory |
p_xAddr | the base address of matrix X in external memory |
p_aColBlocks | the No. blocks along matrix X cols |
p_aRowBlocks | the No. blocks along matrix X rows |
p_bColBlocks | the No. blocks along matrix X cols |
p_aLd | the matrix A word leading dimention |
p_bLd | the matrix B word leading dimention |
p_cLd | the matrix C word leading dimention |
p_xLd | the matrix X word leading dimention |
f_act | the activation function |
p_Args | the arguments for fcn operation |
p_transpBlocks | the number of blocks for compute |
runFcn¶
void runFcn ( DdrIntType* p_DdrRd, DdrIntType* p_DdrWr, FcnArgsType& p_Args )
runFcn launch fcn operation with given arguments
Parameters:
p_DdrRd | the DDR/HBM address for input data |
p_DdrWr | the DDR/HBM address for output data |
p_Args | the arguments for fcn |