MMALIB User Guide
MMALIB_types.h File Reference

Introduction

File to hold common structure, enums, macros and functions for MMALIB.

Version
0.1 - Jan 2018 : Initial Version

Definition in file MMALIB_types.h.

Go to the source code of this file.

Macros

#define MMALIB_DEBUGPRINT   0
 Enable debug printf statements. More...
 
#define MMALIB_const   const
 
#define __PRAGMA(x)   _Pragma(#x)
 
#define __INLINE_FUNC(x)   __PRAGMA(FUNC_ALWAYS_INLINE(x))
 
#define MMALIB_PRINTF(fmt, ...)
 
#define MMALIB_DEBUGPRINTFN(N, fmt, ...)
 
#define MMALIB_MESG(fmt, ...)
 
#define MMALIB_SOFT_MMA_RESET   0
 
#define MMALIB_STATIC_INLINE   static inline
 
#define MMALIB_PARAM_SIZE   128
 Parameter structure size in bytes. More...
 
#define MMALIB_BYTE_WIDTH   __MMA_A_COLS(sizeof(int8_t))
 MMA width in bytes. More...
 
#define MMALIB_MMA_ACCUMULATOR_BYTE_WIDTH_8_BIT   4
 MMA accumulator width in bytes for 8 bit output data width. More...
 
#define MMALIB_MMA_ACCUMULATOR_BYTE_WIDTH_16_BIT   8
 MMA accumulator width in bytes for 16 bit output data width. More...
 
#define MMALIB_MMA_ACCUMULATOR_BYTE_WIDTH_32_BIT   16
 MMA accumulator width in bytes for 32 bit output data width. More...
 
#define MMALIB_ALIGN_SHIFT_64BYTES    6
 Number of bits to shift for 64-byte memory alignment. More...
 
#define MMALIB_ALIGN_SHIFT_128BYTES    7
 Number of bits to shift for 128-byte memory alignment. More...
 
#define MMALIB_ALIGN_SHIFT_256BYTES    8
 Number of bits to shift for 256-byte memory alignment. More...
 
#define MMALIB_ALIGN_64BYTES    (1 << MMALIB_ALIGN_SHIFT_64BYTES)
 Align by 64-byte memory alignment. More...
 
#define MMALIB_ALIGN_128BYTES    (1 << MMALIB_ALIGN_SHIFT_128BYTES)
 Align by 128-byte memory alignment. More...
 
#define MMALIB_ALIGN_256BYTES    (1 << MMALIB_ALIGN_SHIFT_256BYTES)
 Align by 256-byte memory alignment. More...
 
#define MMALIB_L2DATA_ALIGN_SHIFT    MMALIB_ALIGN_SHIFT_64BYTES
 Set the default L2 data alignment. More...
 
#define MMALIB_L2DATA_ALIGNMENT   (((uint32_t)1) << ((uint32_t)MMALIB_L2DATA_ALIGN_SHIFT))
 Macro that specifies the alignment of data buffers in L2 memory for optimal performance. More...
 
#define MMALIB_MMA_SIZE_8_BIT   __MMA_A_COLS(sizeof(int8_t))
 MMA size as a function of precision. More...
 
#define MMALIB_MMA_SIZE_16_BIT   __MMA_A_COLS(sizeof(int16_t))
 
#define MMALIB_MMA_SIZE_32_BIT   __MMA_A_COLS(sizeof(int32_t))
 
#define MMALIB_MMA_BIAS_SIZE_32_BIT   __MMA_A_COLS(sizeof(int32_t))
 
#define MMALIB_MMA_BIAS_SIZE_64_BIT   ((MMALIB_MMA_BIAS_SIZE_32_BIT) >> 1)
 

Typedefs

typedef double MMALIB_D64
 Double precision floating point. More...
 
typedef float MMALIB_F32
 Single precision floating point. More...
 
typedef MMALIB_STATUS_NAME MMALIB_STATUS
 Return value for MMALIB functions. More...
 
typedef void * MMALIB_kernelHandle
 Handle type for MMALIB operations. More...
 
typedef MMALIB_tensor_format_e MMALIB_tensor_format
 
typedef MMALIB_LUT_type_e MMALIB_LUT_type
 

Enumerations

enum  MMALIB_STATUS_NAME {
  MMALIB_STATUS_NOT_SET = 999 , MMALIB_SUCCESS = 0 , MMALIB_ERR_FAILURE = 1 , MMALIB_ERR_INVALID_VALUE = 2 ,
  MMALIB_ERR_INVALID_TYPE = 3 , MMALIB_ERR_INVALID_DIMENSION = 4 , MMALIB_ERR_NULL_POINTER = 5 , MMALIB_ERR_NOT_IMPLEMENTED = 6 ,
  MMALIB_ERR_NOT_EQUAL_WIDTH_STRIDE = 7 , MMALIB_ERR_NOT_ALIGNED_PTRS_STRIDES = 8 , MMALIB_ERR_NOT_ALIGNED_WIDTHS = 9 , MMALIB_ERR_BUFFER_TOO_SMALL = 10 ,
  MMALIB_ERR_INVALID_ACTIVATION = 11 , MMALIB_ERR_INVALID_SHIFT = 12 , MMALIB_ERROR_MAX = 13 , MMALIB_ERR_CONVOLVE_ROW_INVALID_INCHOFFSET_CIRCULAR = 1000 ,
  MMALIB_ERR_CONVOLVE_ROW_UNSUPPORTED_STRIDE = 1001 , MMALIB_ERR_CONVOLVE_ROW_UNSUPPORTED_TYPE_COMBINATION = 1002 , MMALIB_ERR_CONVOLVE_ROW_INVALID_PTR_STRIDE = 1003 , MMALIB_ERR_CONVOLVE_ROW_INVALID_SUBMCHANNELS_STRIDE = 1004 ,
  MMALIB_ERR_CONVOLVE_ROW_INVALID_SUBMCHANNELS = 1005 , MMALIB_ERR_CONVOLVE_ROW_INVALID_BUFFER_DIMENSION = 1006 , MMALIB_ERR_CONVOLVE_ROW_INVALID_ROWS_STRIDE = 1007 , MMALIB_ERR_CONVOLVE_ROW_INVALID_INITARGS = 1008 ,
  MMALIB_ERR_CONVOLVE_ROW_INVALID_VALIDCOLSIN = 1009 , MMALIB_ERR_CONVOLVE_ROW_INVALID_NUM_GROUPS_PER_KERNEL = 1010 , MMALIB_ERR_CONVOLVE_ROW_INVALID_NUM_OUTPUT_CHANNELS_PER_GROUP = 1011 , MMALIB_ERR_CONVOLVE_ROW_INVALID_NUM_GROUPS_PER_KERNEL_STRIDED = 1012 ,
  MMALIB_ERR_CONVOLVE_ROW_INVALID_PAD_VALUES = 1013 , MMALIB_ERR_CONVOLVE_COL_INVALID_SHIFTMETHOD = 2000 , MMALIB_ERR_CONVOLVE_COL_INVALID_SHIFTVALUES = 2001 , MMALIB_ERR_CONVOLVE_COL_INVALID_PAD_VALUES = 2002 ,
  MMALIB_ERR_CONVOLVE_COL_INVALID_NUMBIASVALS = 2003 , MMALIB_ERR_CONVOLVE_COL_INVALID_BIASBVALUES = 2004 , MMALIB_ERR_CONVOLVE_COL_INVALID_BIASB_TYPE = 2005 , MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_INPUT_FEATURE_MAP_TYPE = 2006 ,
  MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_WEIGHTS_TYPE = 2007 , MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_WEIGHTS_DIMENSION = 2008 , MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_OUTPUT_FEATURE_MAP_TYPE = 2009 , MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_TYPE_COMBINATION = 2010 ,
  MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_STRIDE = 2011 , MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_GROUPING = 2012 , MMALIB_ERR_CONVOLVE_COL_INVALID_CASE = 2013 , MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_STRIDE_DILATION_COMBINATION = 2014 ,
  MMALIB_ERR_DECONVOLVE_ROW_INVALID_KERNEL_SIZE = 3000 , MMALIB_ERR_DECONVOLVE_ROW_INVALID_STRIDE = 3001 , MMALIB_ERR_DECONVOLVE_ROW_INVALID_DILATION = 3002 , MMALIB_ERR_DECONVOLVE_ROW_INVALID_PAD = 3003 ,
  MMALIB_ERR_DECONVOLVE_ROW_INVALID_INIT_ARGS = 3004 , MMALIB_ERR_DECONVOLVE_ROW_INVALID_BUFFER_DIMENSION_WEIGHTS = 3005 , MMALIB_ERR_DECONVOLVE_ROW_INVALID_SUBMCHANNELS = 3006 , MMALIB_ERR_DECONVOLVE_ROW_INVALID_BUFFER_SIZES = 3007 ,
  MMALIB_ERR_FULLYCONNECTED_INVALID_TYPE_COMBINATION = 4000 , MMALIB_ERR_FULLYCONNECTED_INVALID_DIMENSION_COMBINATION = 4001 , MMALIB_ERR_FULLYCONNECTED_INVALID_TYPE_RELU_COMBINATION = 4002 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_INCHOFFSET_CIRCULAR = 5000 ,
  MMALIB_ERR_PIXELSHUFFLE_ROW_UNSUPPORTED_STRIDE = 5001 , MMALIB_ERR_PIXELSHUFFLE_ROW_UNSUPPORTED_TYPE_COMBINATION = 5002 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_PTR_STRIDE = 5003 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_SUBMCHANNELS_STRIDE = 5004 ,
  MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_SUBMCHANNELS = 5005 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_BUFFER_DIMENSION = 5006 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_ROWS_STRIDE = 5007 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_INITARGS = 5008 ,
  MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_VALIDCOLSIN = 5009 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_UPSCALE_FACTOR = 5010 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_KDIM = 5011 , MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_NUMOFOUTPUTCHKERBUF = 5012 ,
  MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_PITCHA = 5013 , MMALIB_ERR_TENSOR_CONVERT_INVALID_TYPE_COMBINATION = 6000 , MMALIB_ERR_TENSOR_CONVERT_INVALID_DIMENSION_COMBINATION = 6001 , MMALIB_ERR_TENSOR_CONVERT_UNSUPPORTED_TYPE_COMBINATION = 6002 ,
  MMALIB_ERR_TENSOR_CONVERT_UNSUPPORTED_CHANNEL_DIMENSION = 6003 , MMALIB_ERR_TENSOR_CONVERT_UNSUPPORTED_CONVRSION_FORMAT = 6004 , MMALIB_ERR_TENSOR_CONVERT_UNSUPPORTED_PAD_DIMENSION = 6005 , MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_INPUT_TYPE = 10000 ,
  MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_OUTPUT_TYPE = 10001 , MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_TYPE_COMBINATION = 10002 , MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_ACCUMULATE_UNSUPPORTED_INPUT_TYPE = 11000 , MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_ACCUMULATE_UNSUPPORTED_OUTPUT_TYPE = 11001 ,
  MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_ACCUMULATE_UNSUPPORTED_TYPE_COMBINATION = 11002 , MMALIB_ERR_MATRIX_TRANSPOSE_UNSUPPORTED_INPUT_TYPE = 12000 , MMALIB_ERR_MATRIX_TRANSPOSE_UNSUPPORTED_OUTPUT_TYPE = 12001 , MMALIB_ERR_MATRIX_TRANSPOSE_UNSUPPORTED_TYPE_COMBINATION = 12002 ,
  MMALIB_ERR_POINTWISE_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_INPUT_TYPE = 13000 , MMALIB_ERR_POINTWISE_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_OUTPUT_TYPE = 13001 , MMALIB_ERR_POINTWISE_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_TYPE_COMBINATION = 13002
}
 The enumeration of all status codes. More...
 
enum  MMALIB_FUNCTION_STYLE { MMALIB_FUNCTION_NATC = 0 , MMALIB_FUNCTION_OPTIMIZED , MMALIB_FUNCTION_MAX = 128 }
 Enumeration for the style of function implementation. More...
 
enum  MMALIB_buffer_mode_e { MMALIB_LINEAR = 0 , MMALIB_SE_CIRCULAR , MMALIB_BUF_CIRCULAR }
 Buffer structure for input feature maps and coefficients of MMALIB_CNN_convolve_row_ixX_ixX_oxX. More...
 
enum  MMALIB_tensor_format_e { MMALIB_CHW = 0 , MMALIB_HWC }
 Tensor format. More...
 
enum  MMALIB_LUT_type_e { MMALIB_LUT_NONE = 0 , MMALIB_LUT_ILUT = 1 }
 The enumeration of possible look-up table (LUT) settings. More...
 

Macro Definition Documentation

◆ MMALIB_DEBUGPRINT

#define MMALIB_DEBUGPRINT   0

Enable debug printf statements.

Definition at line 50 of file MMALIB_types.h.

◆ MMALIB_const

#define MMALIB_const   const

Definition at line 56 of file MMALIB_types.h.

◆ __PRAGMA

#define __PRAGMA (   x)    _Pragma(#x)

Definition at line 59 of file MMALIB_types.h.

◆ __INLINE_FUNC

#define __INLINE_FUNC (   x)    __PRAGMA(FUNC_ALWAYS_INLINE(x))

Definition at line 63 of file MMALIB_types.h.

◆ MMALIB_PRINTF

#define MMALIB_PRINTF (   fmt,
  ... 
)
Value:
do { \
fprintf(stdout, fmt, __VA_ARGS__); \
} while (0)

Definition at line 71 of file MMALIB_types.h.

◆ MMALIB_DEBUGPRINTFN

#define MMALIB_DEBUGPRINTFN (   N,
  fmt,
  ... 
)

Definition at line 87 of file MMALIB_types.h.

◆ MMALIB_MESG

#define MMALIB_MESG (   fmt,
  ... 
)

Definition at line 96 of file MMALIB_types.h.

◆ MMALIB_SOFT_MMA_RESET

#define MMALIB_SOFT_MMA_RESET   0

Definition at line 117 of file MMALIB_types.h.

◆ MMALIB_STATIC_INLINE

#define MMALIB_STATIC_INLINE   static inline

Definition at line 120 of file MMALIB_types.h.