Auto Tiler Library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
AutoTilerDataTypes

Data Structures

struct  KernelIteratorInfosT
 
struct  KerIteratorParT
 
struct  KernelIteratorDescrT
 
struct  KernelArgOneDimDescrT
 
struct  KernelArgDimDescrT
 
struct  KernelIterationSpaceT
 
struct  Device_T
 
struct  ConstInit_T
 
struct  CArg_Descriptor_T
 
struct  CKernel_Arg_T
 
struct  GraphArgList_T
 
struct  ArgBindingDescr_T
 
struct  CKernelCall_T
 
struct  KernelDynamicSymbol_T
 
struct  KerArgInfos_T
 
struct  KerArgCost_T
 
struct  Kernel_Arg_T
 
struct  Object_T
 
struct  KernelInfos_T
 
struct  StackedTensors_T
 
struct  Kernel_T
 
struct  CNN_GenControl_T
 
struct  CNN_LayerOp_T
 
struct  KernelLib_T
 
struct  KernelLibTemplate_T
 
struct  MemChunk_T
 
struct  NodeTypeTemplateParameters_T
 
struct  ArgDecl_T
 
struct  NodeTypeTemplate_T
 
struct  ChannelNodeList_T
 
struct  ChannelList_T
 
struct  StackedChannels_T
 
struct  GraphNodeList_T
 
struct  GraphEdgeWebList_T
 
struct  MemLoc_T
 
struct  BufferList_T
 
struct  SymbolAlloc_T
 
struct  GraphEdgeWeb_T
 
struct  GraphNodeCalls_T
 
struct  GraphNode_T
 
struct  CNNGraph_T
 
struct  GraphControl_T
 

Macros

#define ITER_SPACE_MASK
 
#define ITER_PROP_MASK
 
#define ITER_PROP_OFF
 
#define SPACE_PROP_ABS
 
#define SPACE_PROP_REVERT
 
#define RAW_SPACE(Space)
 
#define PROP_SPACE(Space)
 
#define SPACE_PROP(Space, Prop)
 
#define SPACE_PROP_IS(Space, Prop)
 
#define SPACE_PROP_SET(Space, Prop)
 
#define SPACE_PROP_CLR(Space, Prop)
 
#define IS_EXTERNAL_MEM(Mem)
 
#define IS_L3_RAM(Mem)
 
#define IS_FLASH_LOC(Loc)
 
#define IS_VALID_MEM(Mem)
 
#define HAS_ARG_INFO(Arg)
 
#define ARG_IN_L2(Arg)
 
#define ARG_IN_L3(Arg)
 
#define TILE_PTR(PipeOff)
 
#define NB_TILEABLE_SPACES
 
#define Q2F(V, N)
 
#define MultRndu(x, y, scale)
 
#define ALIGN(Value, Size)
 

Typedefs

typedef signed char v4s __attribute__ ((vector_size(4)))
 
typedef struct AGraphNodeList_T GraphNodeList_T
 
typedef struct AGraphNode_T GraphNode_T
 
typedef struct AGraphEdgeWeb_T GraphEdgeWeb_T
 
typedef struct AGraphEdgeWebList_T GraphEdgeWebList_T
 
typedef struct AChannelNodeList_T ChannelNodeList_T
 
typedef struct AChannelList_T ChannelList_T
 
typedef struct ABufferList_T BufferList_T
 
typedef struct A_Object_T Object_T
 
typedef struct A_Kernel_Arg_T Kernel_Arg_T
 
typedef struct A_NodeTypeTemplate_T NodeTypeTemplate_T
 
typedef struct AArgBindingDescr_T ArgBindingDescr_T
 
typedef struct AGraphArgList_T GraphArgList_T
 
typedef struct A_Kernel_T Kernel_T
 
typedef struct A_StackedTensors_T StackedTensors_T
 
typedef Kernel_T KernelGroup_T
 
typedef struct A_MemChunk_T MemChunk_T
 
typedef struct A_ArgDecl_T ArgDecl_T
 
typedef struct AGraphNodeCalls_T GraphNodeCalls_T
 

Enumerations

enum  KernelOper_T
 Defined CNN Kernel operations. More...
 
enum  AT_PadType
 
enum  KernelDimT
 
enum  KernelIterationDimT
 
enum  KernelIteratorT
 Iterators definition. More...
 
enum  KernelCallTypeT
 Basic kernel call type. More...
 
enum  CallLocationT
 Call location attribute. More...
 
enum  KernelCallLocationT
 Call location for basic kernels in the user kernel defined iteration space. More...
 
enum  Tile_Orientation_T
 User kernel tiling orientation. More...
 
enum  KernelArgConstraints_T
 User kernel argument constraints. More...
 
enum  KernelArgSelect_T
 Tile attributes used in argument bindings. More...
 
enum  BasicObjectType_T
 Elementary properties of a user kernel argument. More...
 
enum  Object_Type_T
 Pre defined user kernel argument types. More...
 
enum  InlineModeT
 Control AutoTiler inline strategy. More...
 
enum  KernelOptimizationT
 User Kernel optimization. More...
 
enum  ArgBindingT
 Argument binding selection. More...
 
enum  ArgBindingOper
 Argument binding selection, operation with a constant. More...
 
enum  InfosUsage_T
 
enum  MemHierarchy_T
 
enum  ArgScope_T
 
enum  ArgDirection_T
 
enum  AT_MemLocation_T
 
enum  AT_DumpTensor_T
 
enum  GraghNodeArgT
 
enum  AT_KernelInfo_T
 
enum  NodeType_T
 
enum  BoxType_T
 
enum  AT_GraphCtrl_T
 

Variables

KernelCallLocationT IterCallLocation [][CALL_LAST]
 
KernelIteratorInfosT KerIterInfos []
 
KernelLibTemplate_T KernelLibTemplate []
 
KernelLib_T KernelLib []
 
int HeadKernelLib
 
int HeadKernelLibTemplate
 
Kernel_T KernelStack []
 
int HeadKernelStack
 
KernelGroup_T KernelGroup []
 
int HeadKernelGroup
 
CNNGraph_TCurCNNGraph
 
unsigned int L1MemorySize
 
unsigned int L2MemorySize
 
unsigned int L3MemorySize
 
int MaxL1TopMemory
 
int MaxAllocatedL2
 
char * OutputDir
 
char * ConstDir
 
char * FlashDir
 
char * LibTemplateName
 
Device_T L3_L2_Device []
 
Device_T L3_L2_Device_FC []
 
Device_T L2_L1_Device
 
Device_T L1_Device
 
char * MemoryBaseName []
 
int TopAllocatedMemory []
 
GraphControl_T GraphControl
 
int AvailableMemory []
 
char * ConstDirName
 
NodeTypeTemplateParameters_T NodeTypeTemplateParameters
 

Description

Macro Definition Documentation

#define ALIGN (   Value,
  Size 
)
#define ARG_IN_L2 (   Arg)
#define ARG_IN_L3 (   Arg)
#define HAS_ARG_INFO (   Arg)
#define IS_EXTERNAL_MEM (   Mem)
#define IS_FLASH_LOC (   Loc)
#define IS_L3_RAM (   Mem)
#define IS_VALID_MEM (   Mem)
#define ITER_PROP_MASK
#define ITER_PROP_OFF
#define ITER_SPACE_MASK
#define MultRndu (   x,
  y,
  scale 
)
#define NB_TILEABLE_SPACES
#define PROP_SPACE (   Space)
#define Q2F (   V,
 
)
#define RAW_SPACE (   Space)
#define SPACE_PROP (   Space,
  Prop 
)
#define SPACE_PROP_ABS
#define SPACE_PROP_CLR (   Space,
  Prop 
)
#define SPACE_PROP_IS (   Space,
  Prop 
)
#define SPACE_PROP_REVERT
#define SPACE_PROP_SET (   Space,
  Prop 
)
#define TILE_PTR (   PipeOff)

Typedef Documentation

typedef signed char v4s __attribute__((vector_size(4)))
typedef struct AArgBindingDescr_T ArgBindingDescr_T
typedef struct A_ArgDecl_T ArgDecl_T
typedef struct ABufferList_T BufferList_T
typedef struct AChannelList_T ChannelList_T
typedef struct AChannelNodeList_T ChannelNodeList_T
typedef struct AGraphArgList_T GraphArgList_T
typedef struct AGraphEdgeWeb_T GraphEdgeWeb_T
typedef struct AGraphEdgeWebList_T GraphEdgeWebList_T
typedef struct AGraphNode_T GraphNode_T
typedef struct AGraphNodeCalls_T GraphNodeCalls_T
typedef struct AGraphNodeList_T GraphNodeList_T
typedef struct A_Kernel_Arg_T Kernel_Arg_T
typedef struct A_Kernel_T Kernel_T
typedef struct A_MemChunk_T MemChunk_T
typedef struct A_NodeTypeTemplate_T NodeTypeTemplate_T
typedef struct A_Object_T Object_T
typedef struct A_StackedTensors_T StackedTensors_T

Enumeration Type Documentation

Argument binding selection, operation with a constant

Enumerator
BIND_OP_NOP 
BIND_OP_PLUS 
BIND_OP_MINUS 
BIND_OP_MULT 
BIND_OP_DIV 
BIND_OP_MOD 
BIND_OP_LSHIFT 
BIND_OP_RSHIFT 
BIND_OP_AT_INDEX 
BIND_OP_AND 
BIND_OP_OR 
BIND_OP_LAST 

Argument binding selection

Enumerator
BIND_K_ARG 

Binds to a user kernel argument

BIND_C_ARG 

Binds to a C user kernel argument

BIND_IMM 

Binds to an immediate value

BIND_USYMB 

Binds to a user defined symbol

BIND_KDIM 

Binds to one of the user kernel dimension

BIND_PRED_AND 

Binds to a list of anded predicates

BIND_PRED_OR 

Binds to a list of ored predicates

Enumerator
ARG_DIR_UNDEF 
ARG_DIR_IN 
ARG_DIR_CONSTIN 
ARG_DIR_OUT 
ARG_DIR_INOUT 
enum ArgScope_T
Enumerator
ARG_SCOPE_UNDEF 
ARG_SCOPE_ARG 
ARG_SCOPE_ARG_ALLOC 
ARG_SCOPE_GLOBAL 
ARG_SCOPE_LOCAL 
Enumerator
AT_DUMP_CONSTANT_IN 
AT_DUMP_IN 
AT_DUMP_OUT 
Enumerator
AT_KERNEL_BUFFER_PROMOTE 
AT_KERNEL_PARTIAL_BUFFER_PROMOTE 
AT_KERNEL_NOSOLUTION_ERROR 
AT_GRAPH_MONITOR_CYCLES 
AT_GRAPH_MONITOR_CVAR_NAME 
AT_GRAPH_PRODUCE_NODE_NAMES 
AT_GRAPH_PRODUCE_NODE_CVAR_NAME 
AT_GRAPH_PRODUCE_OPERINFOS 
AT_GRAPH_PRODUCE_OPERINFOS_CVAR_NAME 
AT_GRAPH_REORDER_CONSTANT_IN 
AT_GRAPH_TRACE_EXEC 
AT_GRAPH_NOINLINE_NODE 
AT_GRAPH_PREF_L3_EXEC 
AT_GRAPH_CONST_EXEC_FROM_FLASH 
AT_GRAPH_PREF_L3_HOME 
AT_GRAPH_DUMP_TENSOR 
AT_GRAPH_DUMP_ONE_NODE 
AT_GRAPH_ARG2STRUCT 
AT_GRAPH_SIZE_OPT 
AT_GRAPH_WARM_CONSTRUCT 
Enumerator
AT_KERINFO_OPER 
AT_KERINFO_BANDWIDTH 
Enumerator
AT_MEM_UNDEF 
AT_MEM_L3_HRAM 
AT_MEM_L3_QSPIRAM 
AT_MEM_L3_OSPIRAM 
AT_MEM_L3_HFLASH 
AT_MEM_L3_QSPIFLASH 
AT_MEM_L3_OSPIFLASH 
AT_MEM_L3_MRAMFLASH 
AT_MEM_L2 
AT_MEM_L1 
AT_MEM_LAST 
enum AT_PadType
Enumerator
PAD_LEFT 
PAD_RIGHT 
PAD_BALANCED_LEFT 
PAD_BALANCED_RIGHT 

Elementary properties of a user kernel argument

A user kernel argument object type is a logical or of these elementary properties. In general properties come into pair: a property and not a property. Predefined group of properties in enum Object_Type_T provide a set of consistent set of elementary properties.

Enumerator
O_IN 

Argument is an input

O_NIN 

Argument is not an input

O_OUT 

Argument is an output

O_NOUT 

Argument is not an output

O_BUFF 

Argument is a buffer

O_NBUFF 

Argument is not a buffer

O_TILED 

Argument should be tiled

O_NTILED 

Argument should not be tiled

O_ONETILE 

Argument should be exactly one tile in shared L1

O_NONETILE 

Argument should can have multiple tiles in shared L1

O_DB 

Argument should be double buffered (or triple)

O_NDB 

Argument should be single buffered

O_L2DB 

Argument is in L3 and should be double or triple buffered in L2

O_NL2DB 

Argument is not in L3

O_ALIAS 

Argument is aliased to another argument, different name but same memory location

O_NALIAS 

Argument is not aliased

O_DYNTILE 

Argument tile size is adjusted dynamically

O_NDYNTILE 

Argument tile size is not adjusted dynamically

O_CONST 

Argument is constant, applies to input only

O_NCONST 

Argument is not constant, applies to input only

O_STACK_PRED 

Argument should be allocated without alignment padding between it and prev in declaration list

O_NO_LOAD 

Argument has O_IN and O_BUFF attribute but load is not performed

O_NO_STORE 

Argument has O_OUT and O_BUFF attribute but store is not performed

O_TILE2 

Argument traverses the 3rd level of iteration on the basic data plane

O_TILE1 

Argument traverses the 2nd level of iteration on the basic data plane

O_TILE0 

Argument traverses the 1st level of iteration on the basic data plane, this should always be the case if tiled

enum BoxType_T
Enumerator
DYNAMIC 
CONST_LOAD_EXEC 
CONST_LOAD 
CONST_EXEC 
BUFFER 
TILE_BUFFER 
TILE_SB 
TILE_DB 
TILE_ONETILE 
BT_LAST 
Enumerator
CALL_IN 

Call in the iterator body

CALL_PROLOG 

Call before the iterator starts

CALL_EPILOG 

Call after the iterator stops

CALL_LAST 
Enumerator
GNA_UNDEF 
GNA_IN 
GNA_OUT 
GNA_INOUT 
Enumerator
USE_SPACENAME 
USE_ITERNAME 
USE_TOTALITERNAME 
USE_LASTITERNAME 
USE_NEXTLASTITERNAME 
USE_NEXTNEXTLASTITERNAME 
USE_LAST 

Control AutoTiler inline strategy

Enumerator
NEVER_INLINE 

Never inline user kernels

ALWAYS_INLINE 

Always inline user kernels

SINGLE_INLINE 

Inline a user kernel when it appears only once

User kernel argument constraints. Max 16 of them

Enumerator
OBJ_CONSTRAINTS_NONE 

No constraints on this user kernel argument

OBJ_CONSTRAINTS_ONEPREFTILE 

This user kernel argument has a prefered tile variable size, use only a single tile for it

OBJ_CONSTRAINTS_TILE_HOR 

Force this kernel argument to be tiled horizontaly

OBJ_CONSTRAINTS_TILE_VER 

Force this kernel argument to be tiled verticaly

OBJ_CONSTRAINTS_PAD_REM 

When argument has non integer dim ratio use last tile to recover missing elements if possible

OBJ_CONSTRAINTS_DROP_REM 

When argument has non integer dim ratio simply drop them

OBJ_CONSTRAINTS_DYNAMIC 

When argument has non integer dim ratio dynamically evaluate tile size using DimRatio

OBJ_CONSTRAINTS_2D 

Argument is 2D strided

Tile attributes used in argument bindings

Enumerator
KER_ARG_NONE 

No attributes

KER_ARG_TILE 

The current tile base address in shared L1

KER_ARG_TILE_NEXTDB 

The next tile base address in shared L1, in case argument is double buffered this is the next double buffer

KER_ARG_TILE_OFF 

The current tile byte offset relative to user kernel shared L1 allocated memory

KER_ARG_TILE_1_2 

The current tile base address in shared L1 plus half of the tile size

KER_ARG_TILE_W 

Current tile width

KER_ARG_TILE_USEDW 

Current tile used width

KER_ARG_TILE_H 

Current tile height

KER_ARG_TILE_USEDH 

Current tile used height

KER_ARG_TILE_W0 

Tile standard width (not the one for the last iteration that is potentially smaller)

KER_ARG_TILE_H0 

Tile standard height (not the one for the last iteration that is potentially smaller)

KER_ARG 

User kernel argument base

KER_ARG_W 

User kernel argument width

KER_ARG_H 

User kernel argument height

KER_ARG_NTILES 

Number of tiles for related user kernel argument

KER_ARG_TILEFIRST 

Predicate, != 0 if if current tile is the first one

KER_ARG_TILELAST 

Predicate, != 0 if current tile is the last one

KER_ARG_TILEINDEX 

Current tile index for related user kernel argument, starts at 0

KER_ARG_TILE_BASE 

Current tile base in line or column unit, when argument is dynamic it is computed at runtime

KER_ARG_TILE_PRED_LIST 

List of tile predicate

KER_ARG_IT_INDEX 

Actual value of iterator attached to ItSpace

KER_ARG_PAD 

Actual padding of a feature space associated to arg (left,right,top,bottom) as a v4s

KER_ARG_TILE_PAD 

Actual padding of tile associated to arg (left,right,top,bottom) as a v4s

KER_ARG_PARTILE_DIM 

Actual dimension of a parametric space

KER_ARG_PARTILE_SIZE 

Size of a tile from a parametric space

KER_ARG_LOADEDPARTILE_SIZE 

Size of a tile from a parametric space, in case the related subspace has been promoted to partial buffer returns the dimension of this subspace otherwise is equal to KER_ARG_PARTILE_SIZE

KER_IT_INDEX 

Actual value of a given kernel iterator

TC_ARG 

A C argument

TC_IMM 

An immediate int value

TC_USYMB 

A user defined symbol

TC_KDIM 

One of the user Kernel Dimensions

TC_ARG_IND 

An indirection on a C argument

TC_ARG_IND_IT_INDEX 

An indirection on a C argument with respect to actual value of ItSpace

TC_ARG_PLUS_IT_INDEX 

A C argument added to actual value of ItSpace, ItSpace multiplied by a constant

KER_ARG_INPLANEINDEX 

Current Input Plane index for related user kernel argument, starts at 0

KER_ARG_OUTPLANEINDEX 

Current Output Plane index for related user kernel argument, starts at 0

TC_ARG_IND_IP 

A C argument subscripted by the current In Data Plane iteration index

TC_ARG_IND_OP 

A C argument subscripted by the current Out Data Plane iteration index

TC_ARG_IND_TILE 

A C argument subscripted by the current current most inner iteration index on argument basic data plane

TC_ARG_PLUS_IND_IP 

A C argument added to the current In Data Plane iteration index multiplied by a constant

TC_ARG_PLUS_IND_OP 

A C argument added to the current Out Data Plane iteration index multiplied by a constant

TC_ARG_PLUS_IND_TILE 

A C argument added to the current current most inner iteration index on argument basic data plane multiplied by a constant

TC_ARG_PLUS_OFFSET 

A C argument plus an immediate offset

TC_ARG_PLUS_C_OFFSET 

A C argument plus a C variable name offset

Call location for basic kernels in the user kernel defined iteration space

When the context is a group of user kernels called kernels are user kernels and not basic kernels and in this case only LOC_IN_GROUP is valid

Enumerator
LOC_LOOP 

Call basic kernel in the loop body of iterator 0 on the basic data planes

LOC_LOOP_PROLOG 

Call basic kernel right before the first iteration of iterator 0 on the basic data planes

LOC_LOOP_EPILOG 

Call basic kernel right after the last iteration of iterator 0 on the basic data planes

LOC_LOOP1 

Call basic kernel in the loop body of iterator 1 on the basic data planes

LOC_LOOP1_PROLOG 

Call basic kernel right before the first iteration of iterator 2 on the basic data planes

LOC_LOOP1_EPILOG 

Call basic kernel right after the last iteration of iterator 2 on the basic data planes

LOC_LOOP2 

Call basic kernel in the loop body of iterator 2 on the basic data planes

LOC_LOOP2_PROLOG 

Call basic kernel right before the first iteration of iterator 2 on the basic data planes

LOC_LOOP2_EPILOG 

Call basic kernel right after the last iteration of iterator 2 on the basic data planes

LOC_D0 

Call basic kernel inside Iter D0 body

LOC_D0_PROLOG 

Call basic kernel before 1st iteration on D0

LOC_D0_EPILOG 

Call basic kernel after last iteration on D0

LOC_D1 

Call basic kernel inside Iter D1 body

LOC_D1_PROLOG 

Call basic kernel before 1st iteration on D1

LOC_D1_EPILOG 

Call basic kernel after last iteration on D1

LOC_D2 

Call basic kernel inside Iter D2 body

LOC_D2_PROLOG 

Call basic kernel before 1st iteration on D2

LOC_D2_EPILOG 

Call basic kernel after last iteration on D2

LOC_D3 

Call basic kernel inside Iter D3 body

LOC_D3_PROLOG 

Call basic kernel before 1st iteration on D3

LOC_D3_EPILOG 

Call basic kernel after last iteration on D3

LOC_PROLOG 

Call basic kernel before the entire user kernel iteration structure

LOC_EPILOG 

Call basic kernel after the entire user kernel iteration structure

LOC_GROUP 

Call user kernel in a kernel group

Basic kernel call type

A basic kernel can be called as a sequential call from master core in the cluster, in this case only master core executes the code and arguments are passed with the usual C type list of parameters.

It can also be called on all the available cores in the clusters, this is a parallel call. In this case arguments are grouped into a single structure which address is passed to the parallel dispatcher.

Enumerator
CALL_SEQUENTIAL 

Call the related basic kernel only on master core

CALL_PARALLEL 

Call the related basic kernel on all available cores

CALL_SEQUENTIAL_STRUCT 

Call the related basic kernel only on master core but pass all arguments through one structure

enum KernelDimT
Enumerator
K_INP 
K_OUTP 
K_DIM_LAST 
Enumerator
KER_DIM0 
KER_DIM1 
KER_DIM2 
KER_DIM3 
KER_DIM4 

Iterators definition

Enumerator
KER_ITER_TILE0 

Most inner iteration space operating on the basic data plane of a user kernel argument

KER_ITER_TILE1 

Second inner iteration space operating on the basic data plane of a user kernel argument

KER_ITER_TILE2 

Third inner iteration space operating on the basic data plane of a user kernel argument

KER_ITER_D0 
KER_ITER_D1 
KER_ITER_D2 
KER_ITER_D3 
KER_ITER_LAST 

Marker for last

Defined CNN Kernel operations

Enumerator
KOP_NONE 
KOP_SETBIAS 
KOP_SETBIAS_DP 
KOP_CONV_HWCE 
KOP_CONV 
KOP_CONV_DP 
KOP_CONV_DW 
KOP_CONV_DWDP 
KOP_DP_REDUCT 
KOP_DP_REDUCT_IO 
KOP_DP_REDUCT_MULBIAS 
KOP_DP_REDUCT_IO_MULBIAS 
KOP_DP_REDUCT_MULBIAS_SCALAR 
KOP_DP_REDUCT_IO_MULBIAS_SCALAR 
KOP_MAXPOOL 
KOP_AVGPOOL 
KOP_GLOBAL_MAXPOOL 
KOP_GLOBAL_MAXPOOL_REDUCT 
KOP_GLOBAL_AVGPOOL 
KOP_GLOBAL_AVGPOOL_REDUCT 
KOP_RELU 
KOP_RELUN 
KOP_HSIGMOID 
KOP_HSWISH 
KOP_LEAKYRELU 
KOP_LINEAR 
KOP_LINEAR_DP 
KOP_DP_REDUCT_LINEAR 
KOP_MATADD 
KOP_MATADD_DYNADJUST 
KOP_MATMUL 
KOP_MATMUL_SM1 
KOP_MATMUL_SCALE 
KOP_MATMUL_SCALE_SCALAR 
KOP_MATMUL_SCALE_SM1 
KOP_MATMUL_SCALE_SCALAR_SM1 
KOP_MATSCALE_VECTOR 
KOP_MATSCALE_SCALAR 
KOP_MATSCALE_VECTOR_SCALAR 
KOP_MATVECTMUL 
KOP_MATTRANSP 
KOP_MATPERM_CHW2CWH 
KOP_MATPERM_CHW2HWC 
KOP_MATPERM_CHW2WHC 
KOP_MATPERM_CHW2WCH 
KOP_MATPERM_CHW2HCW 
KOP_SOFTMAX 
KOP_EXPAND 
KOP_COLLAPSE 
KOP_RNN 
KOP_LSTM 
KOP_GRU 
KOP_CONV_RELU 
KOP_CONV_RELUN 
KOP_CONV_MAXPOOL 
KOP_CONV_MAXPOOL_RELU 
KOP_CONV_MAXPOOL_RELUN 
KOP_CONV_AVGPOOL 
KOP_CONV_AVGPOOL_RELU 
KOP_CONV_AVGPOOL_RELUN 
KOP_CONV_DP_RELU 
KOP_CONV_DP_RELUN 
KOP_CONV_DP_MAXPOOL 
KOP_CONV_DP_MAXPOOL_RELU 
KOP_CONV_DP_MAXPOOL_RELUN 
KOP_CONV_DP_AVGPOOL 
KOP_CONV_DP_AVGPOOL_RELU 
KOP_CONV_DP_AVGPOOL_RELUN 
KOP_CONV_DW_RELU 
KOP_CONV_DW_RELUN 
KOP_CONV_DW_MAXPOOL 
KOP_CONV_DW_MAXPOOL_RELU 
KOP_CONV_DW_MAXPOOL_RELUN 
KOP_CONV_DW_AVGPOOL 
KOP_CONV_DW_AVGPOOL_RELU 
KOP_CONV_DW_AVGPOOL_RELUN 
KOP_CONV_DWDP_RELU 
KOP_CONV_DWDP_RELUN 
KOP_CONV_DWDP_MAXPOOL 
KOP_CONV_DWDP_MAXPOOL_RELU 
KOP_CONV_DWDP_MAXPOOL_RELUN 
KOP_CONV_DWDP_AVGPOOL 
KOP_CONV_DWDP_AVGPOOL_RELU 
KOP_CONV_DWDP_AVGPOOL_RELUN 
KOP_MAXPOOL_RELU 
KOP_MAXPOOL_RELUN 
KOP_AVGPOOL_RELU 
KOP_AVGPOOL_RELUN 
KOP_LINEAR_RELU 
KOP_LINEAR_RELUN 
KOP_MATADD_RELU 
KOP_MATADD_RELUN 
KOP_MATMUL_RELU 
KOP_MATMUL_RELUN 
KOP_LAST 

brief User Kernel optimization

Enumerator
KER_OPT_NONE 

No optimization

KER_OPT_BUFFER_PROMOTE 

When all user kernel arguments can fit into given L1 memory promote them to buffer

KER_OPT_PARTIAL_BUFFER_PROMOTE 

When all tile of a user kernel argument across In Planes can fit into given L1 memory promote them to partial buffer

KER_OPT_KEEP_GROUP 

When in part of a group and expanded in a graph all elements of the group should be kept together

Enumerator
UNDEF_MEM 
MEM_L3 
MEM_L2 
MEM_L1 
MEM_LAST 
enum NodeType_T
Enumerator
NODE_ENTRY 
NODE_USER_KER 
NODE_USER_KER_GROUP 
NODE_EXIT 

Pre defined user kernel argument types

Enumerator
OBJ_IN 
OBJ_IN_DB 
OBJ_IN_L2DB 
OBJ_IN_DB_L2DB 
OBJ_OUT 
OBJ_OUT_DB 
OBJ_OUT_L2DB 
OBJ_OUT_DB_L2DB 
OBJ_OUT_DB_ALIAS 
OBJ_IN_OUT 
OBJ_IN_OUT_DB 
OBJ_IN_OUT_L2DB 
OBJ_IN_OUT_DB_L2DB 
OBJ_BUFFER 
OBJ_BUFFER_NTILED 
OBJ_BUFFER_IN 
OBJ_BUFFER_IN_NTILED 
OBJ_BUFFER_OUT 
OBJ_BUFFER_OUT_NTILED 
OBJ_BUFFER_IN_OUT 
OBJ_BUFFER_IN_OUT_NTILED 
OBJ_BUFFER_IN_L2DB 
OBJ_BUFFER_IN_L2DB_NTILED 
OBJ_BUFFER_OUT_L2DB 
OBJ_BUFFER_OUT_L2DB_NTILED 
OBJ_BUFFER_IN_OUT_L2DB 
OBJ_BUFFER_IN_OUT_L2DB_NTILED 
OBJ_BUFFER_ONETILE 
OBJ_BUFFER_DYNTILE 
OBJ_BUFFER_DB_ONETILE 

User kernel tiling orientation

Tiling orientation is global to the user kernel applying to every single user kernel argument unless a given user kernel argument has its own orientation defined in it's set of constraints

Enumerator
TILE_HOR 

Tiles are horizontal, full width and variable height

TILE_VER 

Tiles are vertical, full height and variable width

TILE_UNDEF 

Undefined orientation

Variable Documentation

int AvailableMemory[]
char* ConstDir
char* ConstDirName
CNNGraph_T* CurCNNGraph
char* FlashDir
GraphControl_T GraphControl
int HeadKernelGroup
int HeadKernelLib
int HeadKernelLibTemplate
int HeadKernelStack
KernelCallLocationT IterCallLocation[][CALL_LAST]
KernelIteratorInfosT KerIterInfos[]
KernelGroup_T KernelGroup[]
KernelLib_T KernelLib[]
KernelLibTemplate_T KernelLibTemplate[]
Kernel_T KernelStack[]
Device_T L1_Device
unsigned int L1MemorySize
Device_T L2_L1_Device
unsigned int L2MemorySize
Device_T L3_L2_Device[]
Device_T L3_L2_Device_FC[]
unsigned int L3MemorySize
char* LibTemplateName
int MaxAllocatedL2
int MaxL1TopMemory
char* MemoryBaseName[]
NodeTypeTemplateParameters_T NodeTypeTemplateParameters
char* OutputDir
int TopAllocatedMemory