MATHLIB User Guide
Common definitions

Introduction

This module consists of definitions (macros, structures, utility functions) that are commonly applicable to all MATHLIB kernels.

File to hold buffer parameter related info for MATHLIB.

Version
0.1 - Jan 2018 : Initial Version

Data Structures

struct  MATHLIB_bufParams1D_t
 A structure for a 1 dimensional buffer descriptor. More...
 
struct  MATHLIB_bufParams2D_t
 A structure for a 2 dimensional buffer descriptor. More...
 
struct  MATHLIB_bufParams3D_t
 A structure for a 3 dimensional buffer descriptor. More...
 
struct  MATHLIB_bufParamsND_t
 A structure for a N dimensional buffer descriptor. More...
 

Functions

static int32_t MATHLIB_sizeof (uint32_t type)
 Inline function returns number of bytes per element given a type of MATHLIB_data_type_e. More...
 

Typedefs

typedef double MATHLIB_D64
 Double precision floating point. More...
 
typedef float MATHLIB_F32
 Single precision floating point. More...
 
typedef MATHLIB_STATUS_NAME MATHLIB_STATUS
 Return value for MATHLIB functions. More...
 
typedef void * MATHLIB_kernelHandle
 Handle type for MATHLIB operations. More...
 

Enumerations

enum  MATHLIB_data_type_e {
  MATHLIB_INT8 = 0, MATHLIB_INT16 = 1, MATHLIB_INT32 = 2, MATHLIB_INT64 = 3,
  MATHLIB_INT128 = 4, MATHLIB_UINT8 = 5, MATHLIB_UINT16 = 6, MATHLIB_UINT24 = 7,
  MATHLIB_UINT32 = 8, MATHLIB_UINT64 = 9, MATHLIB_UINT128 = 10, MATHLIB_FLOAT16 = 11,
  MATHLIB_FLOAT32 = 12, MATHLIB_FLOAT64 = 13
}
 The enumeration of all data types. More...
 
enum  MATHLIB_dimension_e {
  MATHLIB_2D = 0, MATHLIB_3D = 1, MATHLIB_4D = 2, MATHLIB_5D = 3,
  MATHLIB_6D = 4
}
 The enumeration of multidimensional buffer types. More...
 
enum  MATHLIB_STATUS_NAME {
  MATHLIB_SUCCESS = 0, MATHLIB_ERR_FAILURE = 1, MATHLIB_ERR_INVALID_VALUE = 2, MATHLIB_ERR_INVALID_TYPE = 3,
  MATHLIB_ERR_INVALID_DIMENSION = 4, MATHLIB_ERR_NULL_POINTER = 5, MATHLIB_ERR_NOT_IMPLEMENTED = 6, MATHLIB_ERR_NOT_EQUAL_WIDTH_STRIDE = 7,
  MATHLIB_ERR_NOT_ALIGNED_PTRS_STRIDES = 8, MATHLIB_ERR_NOT_ALIGNED_WIDTHS = 9, MATHLIB_ERR_BUFFER_TOO_SMALL = 10, MATHLIB_ERR_INVALID_ACTIVATION = 11,
  MATHLIB_ERR_INVALID_SHIFT = 12, MATHLIB_ERROR_MAX = 13
}
 The enumeration of all status codes. More...
 
enum  MATHLIB_FUNCTION_STYLE { MATHLIB_FUNCTION_NATC = 0, MATHLIB_FUNCTION_OPTIMIZED, MATHLIB_FUNCTION_MAX = 128 }
 Enumeration for the style of function implementation. More...
 
enum  MATHLIB_buffer_mode_e { MATHLIB_LINEAR = 0, MATHLIB_SE_CIRCULAR, MATHLIB_BUF_CIRCULAR }
 Buffer structure for input feature maps and coefficients of MATHLIB_CNN_convolve_row_ixX_ixX_oxX. More...
 

Macros

#define MATHLIB_ISSIGNED(type)   ((type) < MATHLIB_UINT8 || (type) > MATHLIB_UINT128)
 
#define MATHLIB_SIGNEDNESS(type)   (MATHLIB_ISSIGNED((type)) ? "signed" : "unsigned")
 
#define MATHLIB_PARAM_SIZE   128
 Parameter structure size in bytes. More...
 
#define MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_8_BIT   4
 MMA accumulator width in bytes for 8 bit output data width. More...
 
#define MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_16_BIT   8
 MMA accumulator width in bytes for 16 bit output data width. More...
 
#define MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_32_BIT   16
 MMA accumulator width in bytes for 32 bit output data width. More...
 
#define MATHLIB_ALIGN_SHIFT_64BYTES   6
 Number of bits to shift for 64-byte memory alignment. More...
 
#define MATHLIB_ALIGN_SHIFT_128BYTES   7
 Number of bits to shift for 128-byte memory alignment. More...
 
#define MATHLIB_ALIGN_SHIFT_256BYTES   8
 Number of bits to shift for 256-byte memory alignment. More...
 
#define MATHLIB_ALIGN_64BYTES   (1 << MATHLIB_ALIGN_SHIFT_64BYTES)
 Align by 64-byte memory alignment. More...
 
#define MATHLIB_ALIGN_128BYTES   (1 << MATHLIB_ALIGN_SHIFT_128BYTES)
 Align by 128-byte memory alignment. More...
 
#define MATHLIB_ALIGN_256BYTES   (1 << MATHLIB_ALIGN_SHIFT_256BYTES)
 Align by 256-byte memory alignment. More...
 
#define MATHLIB_L2DATA_ALIGN_SHIFT   MATHLIB_ALIGN_SHIFT_64BYTES
 Set the default L2 data alignment. More...
 
#define MATHLIB_L2DATA_ALIGNMENT   (((uint32_t)1) << ((uint32_t)MATHLIB_L2DATA_ALIGN_SHIFT))
 Macro that specifies the alignment of data buffers in L2 memory for optimal performance. More...
 

Macro Definition Documentation

◆ MATHLIB_ISSIGNED

#define MATHLIB_ISSIGNED (   type)    ((type) < MATHLIB_UINT8 || (type) > MATHLIB_UINT128)

Definition at line 69 of file MATHLIB_bufParams.h.

◆ MATHLIB_SIGNEDNESS

#define MATHLIB_SIGNEDNESS (   type)    (MATHLIB_ISSIGNED((type)) ? "signed" : "unsigned")

Definition at line 70 of file MATHLIB_bufParams.h.

◆ MATHLIB_PARAM_SIZE

#define MATHLIB_PARAM_SIZE   128

Parameter structure size in bytes.

Definition at line 220 of file MATHLIB_types.h.

◆ MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_8_BIT

#define MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_8_BIT   4

MMA accumulator width in bytes for 8 bit output data width.

Definition at line 222 of file MATHLIB_types.h.

◆ MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_16_BIT

#define MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_16_BIT   8

MMA accumulator width in bytes for 16 bit output data width.

Definition at line 223 of file MATHLIB_types.h.

◆ MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_32_BIT

#define MATHLIB_MMA_ACCUMULATOR_BYTE_WIDTH_32_BIT   16

MMA accumulator width in bytes for 32 bit output data width.

Definition at line 224 of file MATHLIB_types.h.

◆ MATHLIB_ALIGN_SHIFT_64BYTES

#define MATHLIB_ALIGN_SHIFT_64BYTES   6

Number of bits to shift for 64-byte memory alignment.

Definition at line 233 of file MATHLIB_types.h.

◆ MATHLIB_ALIGN_SHIFT_128BYTES

#define MATHLIB_ALIGN_SHIFT_128BYTES   7

Number of bits to shift for 128-byte memory alignment.

Definition at line 235 of file MATHLIB_types.h.

◆ MATHLIB_ALIGN_SHIFT_256BYTES

#define MATHLIB_ALIGN_SHIFT_256BYTES   8

Number of bits to shift for 256-byte memory alignment.

Definition at line 237 of file MATHLIB_types.h.

◆ MATHLIB_ALIGN_64BYTES

#define MATHLIB_ALIGN_64BYTES   (1 << MATHLIB_ALIGN_SHIFT_64BYTES)

Align by 64-byte memory alignment.

Definition at line 240 of file MATHLIB_types.h.

◆ MATHLIB_ALIGN_128BYTES

#define MATHLIB_ALIGN_128BYTES   (1 << MATHLIB_ALIGN_SHIFT_128BYTES)

Align by 128-byte memory alignment.

Definition at line 242 of file MATHLIB_types.h.

◆ MATHLIB_ALIGN_256BYTES

#define MATHLIB_ALIGN_256BYTES   (1 << MATHLIB_ALIGN_SHIFT_256BYTES)

Align by 256-byte memory alignment.

Definition at line 244 of file MATHLIB_types.h.

◆ MATHLIB_L2DATA_ALIGN_SHIFT

#define MATHLIB_L2DATA_ALIGN_SHIFT   MATHLIB_ALIGN_SHIFT_64BYTES

Set the default L2 data alignment.

Definition at line 247 of file MATHLIB_types.h.

◆ MATHLIB_L2DATA_ALIGNMENT

#define MATHLIB_L2DATA_ALIGNMENT   (((uint32_t)1) << ((uint32_t)MATHLIB_L2DATA_ALIGN_SHIFT))

Macro that specifies the alignment of data buffers in L2 memory for optimal performance.

Definition at line 252 of file MATHLIB_types.h.

Typedef Documentation

◆ MATHLIB_D64

typedef double MATHLIB_D64

Double precision floating point.

Definition at line 170 of file MATHLIB_types.h.

◆ MATHLIB_F32

typedef float MATHLIB_F32

Single precision floating point.

Definition at line 171 of file MATHLIB_types.h.

◆ MATHLIB_STATUS

Return value for MATHLIB functions.

Definition at line 191 of file MATHLIB_types.h.

◆ MATHLIB_kernelHandle

typedef void* MATHLIB_kernelHandle

Handle type for MATHLIB operations.

Definition at line 193 of file MATHLIB_types.h.

Enumeration Type Documentation

◆ MATHLIB_data_type_e

The enumeration of all data types.

Enumerator
MATHLIB_INT8 

Signed 8-bit integer

MATHLIB_INT16 

Signed 16-bit integer

MATHLIB_INT32 

Signed 32-bit integer

MATHLIB_INT64 

Signed 64-bit integer

MATHLIB_INT128 

Signed 128-bit integer

MATHLIB_UINT8 

Unsigned 8-bit integer

MATHLIB_UINT16 

Unsigned 16-bit integer

MATHLIB_UINT24 

Unsigned 24-bit integer

MATHLIB_UINT32 

Unsigned 32-bit integer

MATHLIB_UINT64 

Unsigned 64-bit integer

MATHLIB_UINT128 

Unsigned 128-bit integer

MATHLIB_FLOAT16 

16-bit floating point number

MATHLIB_FLOAT32 

32-bit floating point number

MATHLIB_FLOAT64 

64-bit floating point number

Definition at line 40 of file MATHLIB_bufParams.h.

◆ MATHLIB_dimension_e

The enumeration of multidimensional buffer types.

Enumerator
MATHLIB_2D 

Two dimensional buffer

MATHLIB_3D 

Three dimensional buffer

MATHLIB_4D 

Four dimensional buffer

MATHLIB_5D 

Five dimensional buffer

MATHLIB_6D 

Six dimensional buffer

Definition at line 73 of file MATHLIB_bufParams.h.

◆ MATHLIB_STATUS_NAME

The enumeration of all status codes.

Enumerator
MATHLIB_SUCCESS 

0 => No error

MATHLIB_ERR_FAILURE 

1 => Unspecified error

MATHLIB_ERR_INVALID_VALUE 

2 => Invalid parameter value

MATHLIB_ERR_INVALID_TYPE 

3 => Invalid parameter type (MATHLIB_data_type_e data_type)

MATHLIB_ERR_INVALID_DIMENSION 

4 => Dimension parameter (width/height) is too big/small

MATHLIB_ERR_NULL_POINTER 

5 => Unsupported null pointer condition

MATHLIB_ERR_NOT_IMPLEMENTED 

6 => Parameter configuration is not supported/implemented

MATHLIB_ERR_NOT_EQUAL_WIDTH_STRIDE 

7 => Stride should be equal to width * element size

MATHLIB_ERR_NOT_ALIGNED_PTRS_STRIDES 

8 => Pointers and stride values are not aligned to documented value

MATHLIB_ERR_NOT_ALIGNED_WIDTHS 

9 => Width values are not aligned to documented value

MATHLIB_ERR_BUFFER_TOO_SMALL 

10 => Buffer size not large enough

MATHLIB_ERR_INVALID_ACTIVATION 

11 => Activation selection incompatible with data type

MATHLIB_ERR_INVALID_SHIFT 

12 => Requested shift amount is not valid

MATHLIB_ERROR_MAX 

Definition at line 174 of file MATHLIB_types.h.

◆ MATHLIB_FUNCTION_STYLE

Enumeration for the style of function implementation.

Enumerator
MATHLIB_FUNCTION_NATC 

Natural C implementation of the function

MATHLIB_FUNCTION_OPTIMIZED 

Optimized C implementation of the function for the MMA + C7x architecture

MATHLIB_FUNCTION_MAX 

Definition at line 196 of file MATHLIB_types.h.

◆ MATHLIB_buffer_mode_e

Buffer structure for input feature maps and coefficients of MATHLIB_CNN_convolve_row_ixX_ixX_oxX.

Enumerator
MATHLIB_LINEAR 

Linear buffer.

MATHLIB_SE_CIRCULAR 

streaming engine

Circular buffer for input feature map managed by

MATHLIB_BUF_CIRCULAR 

Circular buffer for coefficients.

Definition at line 205 of file MATHLIB_types.h.

Function Documentation

◆ MATHLIB_sizeof()

static int32_t MATHLIB_sizeof ( uint32_t  type)
inlinestatic

Inline function returns number of bytes per element given a type of MATHLIB_data_type_e.

Definition at line 145 of file MATHLIB_bufParams.h.