add cvibuilder
commit 4309f2a649fc7cfe7160389d52a81c469dbdd7bc Author: sophgo-forum-service <forum_service@sophgo.com> Date: Mon May 13 14:11:17 2024 +0800 [feat] cvibuilder opensource for cv18xx soc. - 60a1a5
This commit is contained in:
@ -1,18 +1,18 @@
|
||||
|
||||
| Package | PATH | URL | Branch | Commit |
|
||||
|:---------------------------|:------------------------------------|:---------------------------------------------------------|:--------------|:-------------|
|
||||
| root dir | | https://github.com/sophgo/sophpi.git | sg200x-evb | d1edce7 |
|
||||
| build | build | https://github.com/sophgo/build.git | sg200x-dev | 985b304 |
|
||||
| fsbl | fsbl | https://github.com/sophgo/fsbl.git | sg200x-dev | 426d1e7 |
|
||||
| opensbi | opensbi | https://github.com/sophgo/opensbi.git | sg200x-dev | 216793f |
|
||||
| u-boot-2021.10 | u-boot-2021.10 | https://github.com/sophgo/u-boot-2021.10.git | sg200x-dev | 396f62108c |
|
||||
| linux_5.10 | linux_5.10 | https://github.com/sophgo/linux_5.10.git | sg200x-dev | 25faa0d62fb5 |
|
||||
| ramdisk | ramdisk | https://github.com/sophgo/ramdisk.git | sg200x-dev | 9a529ad |
|
||||
| middleware | middleware | https://github.com/sophgo/middleware.git | sg200x-dev | 07726f4 |
|
||||
| SensorSupportList | middleware/v2/component/isp | https://github.com/sophgo/SensorSupportList.git | cv18xx-v4.1.x | caade0b |
|
||||
| isp_tuning | isp_tuning | https://github.com/sophgo/isp_tuning.git | sg200x-dev | 6504909 |
|
||||
| osdrv | osdrv | https://github.com/sophgo/osdrv.git | sg200x-dev | 0c88923 |
|
||||
| oss | oss | https://github.com/sophgo/oss.git | master | 59b6a54 |
|
||||
| freertos | freertos | https://github.com/sophgo/freertos.git | sg200x-dev | d3d075910 |
|
||||
| FreeRTOS-Kernel | freertos/Source | https://github.com/sophgo/FreeRTOS-Kernel.git | sg200x-dev | d52c1b6e6 |
|
||||
| Lab-Project-FreeRTOS-POSIX | freertos/Source/FreeRTOS-Plus-POSIX | https://github.com/sophgo/Lab-Project-FreeRTOS-POSIX.git | sg200x-dev | 5042bfd |
|
||||
|
||||
| Package | PATH | URL | Branch | Commit |
|
||||
|:---------------------------|:------------------------------------|:---------------------------------------------------------|:--------------|:-------------|
|
||||
| root dir | | https://github.com/sophgo/sophpi.git | sg200x-evb | d1edce7 |
|
||||
| build | build | https://github.com/sophgo/build.git | sg200x-dev | 985b304 |
|
||||
| fsbl | fsbl | https://github.com/sophgo/fsbl.git | sg200x-dev | 426d1e7 |
|
||||
| opensbi | opensbi | https://github.com/sophgo/opensbi.git | sg200x-dev | 216793f |
|
||||
| u-boot-2021.10 | u-boot-2021.10 | https://github.com/sophgo/u-boot-2021.10.git | sg200x-dev | 396f62108c |
|
||||
| linux_5.10 | linux_5.10 | https://github.com/sophgo/linux_5.10.git | sg200x-dev | 25faa0d62fb5 |
|
||||
| ramdisk | ramdisk | https://github.com/sophgo/ramdisk.git | sg200x-dev | 9a529ad |
|
||||
| middleware | middleware | https://github.com/sophgo/middleware.git | sg200x-dev | 07726f4 |
|
||||
| SensorSupportList | middleware/v2/component/isp | https://github.com/sophgo/SensorSupportList.git | cv18xx-v4.1.x | caade0b |
|
||||
| isp_tuning | isp_tuning | https://github.com/sophgo/isp_tuning.git | sg200x-dev | 6504909 |
|
||||
| osdrv | osdrv | https://github.com/sophgo/osdrv.git | sg200x-dev | 0c88923 |
|
||||
| oss | oss | https://github.com/sophgo/oss.git | master | 59b6a54 |
|
||||
| freertos | freertos | https://github.com/sophgo/freertos.git | sg200x-dev | d3d075910 |
|
||||
| FreeRTOS-Kernel | freertos/Source | https://github.com/sophgo/FreeRTOS-Kernel.git | sg200x-dev | d52c1b6e6 |
|
||||
| Lab-Project-FreeRTOS-POSIX | freertos/Source/FreeRTOS-Plus-POSIX | https://github.com/sophgo/Lab-Project-FreeRTOS-POSIX.git | sg200x-dev | 5042bfd |
|
||||
|
||||
19
.version/2024-05-31.md
Normal file
19
.version/2024-05-31.md
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
| Package | PATH | URL | Branch | Commit |
|
||||
|:---------------------------|:------------------------------------|:---------------------------------------------------------|:--------------|:-------------|
|
||||
| root dir | | https://github.com/sophgo/sophpi.git | sg200x-evb | d1edce7 |
|
||||
| build | build | https://github.com/sophgo/build.git | sg200x-dev | 985b304 |
|
||||
| fsbl | fsbl | https://github.com/sophgo/fsbl.git | sg200x-dev | 426d1e7 |
|
||||
| opensbi | opensbi | https://github.com/sophgo/opensbi.git | sg200x-dev | 216793f |
|
||||
| u-boot-2021.10 | u-boot-2021.10 | https://github.com/sophgo/u-boot-2021.10.git | sg200x-dev | 396f62108c |
|
||||
| linux_5.10 | linux_5.10 | https://github.com/sophgo/linux_5.10.git | sg200x-dev | 25faa0d62fb5 |
|
||||
| ramdisk | ramdisk | https://github.com/sophgo/ramdisk.git | sg200x-dev | 9a529ad |
|
||||
| middleware | middleware | https://github.com/sophgo/middleware.git | sg200x-dev | 07726f4 |
|
||||
| SensorSupportList | middleware/v2/component/isp | https://github.com/sophgo/SensorSupportList.git | cv18xx-v4.1.x | caade0b |
|
||||
| isp_tuning | isp_tuning | https://github.com/sophgo/isp_tuning.git | sg200x-dev | 6504909 |
|
||||
| osdrv | osdrv | https://github.com/sophgo/osdrv.git | sg200x-dev | 0c88923 |
|
||||
| oss | oss | https://github.com/sophgo/oss.git | master | 59b6a54 |
|
||||
| freertos | freertos | https://github.com/sophgo/freertos.git | sg200x-dev | d3d075910 |
|
||||
| FreeRTOS-Kernel | freertos/Source | https://github.com/sophgo/FreeRTOS-Kernel.git | sg200x-dev | d52c1b6e6 |
|
||||
| Lab-Project-FreeRTOS-POSIX | freertos/Source/FreeRTOS-Plus-POSIX | https://github.com/sophgo/Lab-Project-FreeRTOS-POSIX.git | sg200x-dev | 5042bfd |
|
||||
| cvibuilder | cvibuilder | https://github.com/sophgo/cvibuilder.git | sg200x-dev | 4309f2a |
|
||||
3
cvibuilder/.gitignore
vendored
Normal file
3
cvibuilder/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
build
|
||||
*.pyc
|
||||
*.cm
|
||||
29
cvibuilder/CMakeLists.txt
Normal file
29
cvibuilder/CMakeLists.txt
Normal file
@ -0,0 +1,29 @@
|
||||
cmake_minimum_required(VERSION 3.1.0)
|
||||
|
||||
project(cvibuilder C CXX)
|
||||
|
||||
if (NOT DEFINED FLATBUFFERS_PATH)
|
||||
message(FATAL_ERROR "Please set FLATBUF_PATH")
|
||||
endif()
|
||||
message(STATUS "FLATBUFFERS_PATH: ${FLATBUFFERS_PATH}")
|
||||
|
||||
function(compile_fbs)
|
||||
foreach(fbs_file IN LISTS ARGN)
|
||||
get_filename_component(name ${fbs_file} NAME_WE)
|
||||
set(target_header ${CMAKE_CURRENT_BINARY_DIR}/include/cvibuilder/${name}_generated.h)
|
||||
message(STATUS "To compile fbs files ${fbs_file} for ${target_header}")
|
||||
add_custom_command(OUTPUT ${target_header}
|
||||
DEPENDS ${fbs_file}
|
||||
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/include/cvibuilder
|
||||
COMMAND ${FLATBUFFERS_PATH}/bin/flatc -o ${CMAKE_CURRENT_BINARY_DIR}/include/cvibuilder --cpp ${fbs_file}
|
||||
)
|
||||
set(targets ${targets} ${target_header})
|
||||
endforeach()
|
||||
add_custom_target(cvibuilder ALL DEPENDS ${targets})
|
||||
install(FILES ${targets} DESTINATION include/cvibuilder/)
|
||||
endfunction()
|
||||
|
||||
compile_fbs(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/proto/cvimodel.fbs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/proto/parameter.fbs
|
||||
)
|
||||
2
cvibuilder/README.md
Normal file
2
cvibuilder/README.md
Normal file
@ -0,0 +1,2 @@
|
||||
# cvibuilder
|
||||
|
||||
215
cvibuilder/proto/cvimodel.fbs
Normal file
215
cvibuilder/proto/cvimodel.fbs
Normal file
@ -0,0 +1,215 @@
|
||||
namespace cvi.model;
|
||||
|
||||
///
|
||||
/// General Descriptions
|
||||
/// Model:
|
||||
/// A model is generated from one NN model, it contains one or more
|
||||
/// `Segment`s, each `Segment` could be either a TPU segment or a CPU
|
||||
/// segment. A Model takes one or more `Tensor`s as input, and produces
|
||||
/// one or more `Tensor's as output. Along with `Segment`s, a list of
|
||||
/// `Memory` and a list of `Tensor` are provided.
|
||||
/// Segment:
|
||||
/// A segment is a program running on a certain type of engine (`TPU` or
|
||||
/// `CPU`), which takes a list of `Tensor`s as input, and produces a list
|
||||
/// of `Tensor`s as output.
|
||||
/// Memory:
|
||||
/// Memorys are memory spaces that are holding actual data. `Memory`s are
|
||||
/// passed among `Segment`s or passed as input/output of the `Model`. When
|
||||
/// `size` field is present, `size` specifies the space that is needed. When
|
||||
/// `size` is not present (or set to -1), the memory is dynamic shaped, and
|
||||
/// runtime needs to derive size for the `Memory` after input shape has been
|
||||
/// set.
|
||||
/// Tensor:
|
||||
/// Tensor is an abstract description of a chunk of data, with a specific
|
||||
/// data type (DType) and shape, as well optional strides. Each Tensor is
|
||||
/// bound to a `Memory` (with memory_id). When present, `offset` is used to
|
||||
/// describe the relative address of the tensor within the `Memory`.
|
||||
/// InputTensor/OutputTensor:
|
||||
/// To describe the input/output tensors of the model, by referencing
|
||||
/// tensor_id in tensor_list, along with preprocess_hints/postprocess_hints.
|
||||
/// `preprocess_hints` are information on how input data should be processed
|
||||
/// before passing to the model, and `postprocess_hints` are information on
|
||||
/// how output data should be processed.
|
||||
/// Program:
|
||||
/// Program is the executive part of a `Segment`, 2 types of Programs are
|
||||
/// defined, TpuProgram and CpuProgram.
|
||||
/// TpuProgram:
|
||||
/// A TpuProgram consists of `Cmdbuf` and `Weight`. To support different
|
||||
/// batch_size or input image dimesions, multiple `Cmdbuf`s may be needed,
|
||||
/// with each `Cmdbuf` handling one fixed batch_size and image dims. i.e.
|
||||
/// on `Cmdbuf` level dynamic shape are not supported.
|
||||
/// Cmdbuf:
|
||||
/// Cmdbuf is a sequence of TPU instuctions.
|
||||
/// Weight:
|
||||
/// Weight is the trained weight data.
|
||||
/// CpuProgram:
|
||||
/// A CpuProgram consists of a cpu function and `Weight`. A function could
|
||||
/// be either a runtime build-in function, or a plug-in library registered
|
||||
/// along with the Model in the CpuFunction section.
|
||||
/// CpuFunction:
|
||||
/// A CpuFunction is a plug-in library registered along with the Model.
|
||||
///
|
||||
|
||||
enum MajorVersion : ubyte {
|
||||
value = 1
|
||||
}
|
||||
enum MinorVersion : ubyte {
|
||||
value = 4
|
||||
}
|
||||
enum SubMinorVersion : ubyte {
|
||||
value = 0
|
||||
}
|
||||
|
||||
struct Version {
|
||||
major_ : ubyte;
|
||||
minor_ : ubyte;
|
||||
sub_minor : ubyte;
|
||||
}
|
||||
|
||||
enum DType : ubyte {
|
||||
FP32 = 0,
|
||||
INT32 = 1,
|
||||
UINT32 = 2,
|
||||
BF16 = 3,
|
||||
INT16 = 4,
|
||||
UINT16 = 5,
|
||||
INT8 = 6,
|
||||
UINT8 = 7
|
||||
}
|
||||
|
||||
/// -1 is used to indicate that dim is dynamic
|
||||
table Shape {
|
||||
dim:[int64] (required);
|
||||
}
|
||||
|
||||
enum QuantType : ubyte {
|
||||
NONE = 0,
|
||||
BF16 = 1,
|
||||
INT8_SYM = 2,
|
||||
INT8_ASYM = 3
|
||||
}
|
||||
|
||||
/// for symetric quant, only max_value is used (also called threshold)
|
||||
table QuantInfo {
|
||||
type:QuantType;
|
||||
max_value:float;
|
||||
min_value:float;
|
||||
zero_point:float;
|
||||
qscale:float;
|
||||
}
|
||||
|
||||
table Tensor {
|
||||
tensor_id:uint32;
|
||||
name:string (required);
|
||||
offset:int64;
|
||||
dtype:DType;
|
||||
shape:Shape (required);
|
||||
stride:Shape;
|
||||
quant:QuantInfo;
|
||||
overwrote:bool;
|
||||
scale:[float];
|
||||
mean:[float];
|
||||
pixel_format:string;
|
||||
aligned:bool;
|
||||
size:uint32;
|
||||
}
|
||||
|
||||
table Weight {
|
||||
name:string;
|
||||
offset:int64;
|
||||
size:uint32;
|
||||
shape:Shape;
|
||||
type:DType;
|
||||
}
|
||||
|
||||
///
|
||||
/// color:
|
||||
/// channel order for input image, valid values are `RGB`, `BGR`.
|
||||
/// raw_scale:
|
||||
/// a scale to apply before other proprocessing precedures
|
||||
/// mean:
|
||||
/// channel mean value, preprocess will substract the input by this value
|
||||
/// std:
|
||||
/// channel std value, preprocess will divide the input by this value
|
||||
/// input_scale:
|
||||
/// a scale to apply after other proprocessing precedures
|
||||
///
|
||||
table PreProcessHints {
|
||||
color:string;
|
||||
raw_scale:float;
|
||||
mean:string;
|
||||
std:string;
|
||||
input_scale:float;
|
||||
data_format:string;
|
||||
}
|
||||
|
||||
table PostProcessHints {
|
||||
done_softmax:bool;
|
||||
}
|
||||
|
||||
enum RoutineType: ubyte {
|
||||
TPU = 0,
|
||||
CPU = 1
|
||||
}
|
||||
|
||||
table TpuRoutine {
|
||||
cmdbuf_section:string;
|
||||
dmabuf_section:string;
|
||||
}
|
||||
|
||||
table CpuRoutine {
|
||||
function_section:string (required);
|
||||
function_args:[ubyte] (required);
|
||||
}
|
||||
|
||||
table Routine {
|
||||
type:RoutineType;
|
||||
in_tensors:[string];
|
||||
out_tensors:[string];
|
||||
tpu_routine:TpuRoutine;
|
||||
cpu_routine:CpuRoutine;
|
||||
}
|
||||
|
||||
table Program {
|
||||
batch_num:uint32;
|
||||
neuron_size:uint32;
|
||||
input_tensors:[string] (required);
|
||||
output_tensors:[string] (required);
|
||||
tensor_map:[Tensor] (required);
|
||||
routines:[Routine] (required);
|
||||
shared_gmem:uint32;
|
||||
private_gmem:uint32;
|
||||
}
|
||||
|
||||
enum SectionType: ubyte {
|
||||
WEIGHT = 0,
|
||||
CMDBUF = 1,
|
||||
FUNC_X86 = 2,
|
||||
FUNC_AARCH64 = 3,
|
||||
DMABUF = 4
|
||||
}
|
||||
|
||||
table Section {
|
||||
type:SectionType;
|
||||
name:string (required);
|
||||
size:uint32;
|
||||
offset:uint32;
|
||||
encrypt:bool;
|
||||
compress:bool;
|
||||
decompressed_size:uint32;
|
||||
}
|
||||
|
||||
table Model {
|
||||
version:Version (required);
|
||||
name:string (required);
|
||||
build_time:string;
|
||||
preprocess_hints:PreProcessHints;
|
||||
postprocess_hints:PostProcessHints;
|
||||
weight_map:[Weight];
|
||||
programs:[Program] (required);
|
||||
sections:[Section] (required);
|
||||
target:string;
|
||||
mlir_version:string;
|
||||
}
|
||||
|
||||
root_type Model;
|
||||
46
cvibuilder/proto/parameter.fbs
Normal file
46
cvibuilder/proto/parameter.fbs
Normal file
@ -0,0 +1,46 @@
|
||||
namespace cvi.cpu_op;
|
||||
|
||||
table IntAttr {
|
||||
key:string;
|
||||
value:int;
|
||||
}
|
||||
|
||||
table FloatAttr {
|
||||
key:string;
|
||||
value:float;
|
||||
}
|
||||
|
||||
table BoolAttr {
|
||||
key:string;
|
||||
value:bool;
|
||||
}
|
||||
|
||||
table StrAttr {
|
||||
key:string;
|
||||
value:string;
|
||||
}
|
||||
|
||||
table IntArrayAttr {
|
||||
key:string;
|
||||
value:[int];
|
||||
}
|
||||
|
||||
table FloatArrayAttr {
|
||||
key:string;
|
||||
value:[float];
|
||||
}
|
||||
|
||||
table Attribute {
|
||||
float_attr:FloatAttr;
|
||||
bool_attr:BoolAttr;
|
||||
int_attr:IntAttr;
|
||||
str_attr:StrAttr;
|
||||
float_array_attr:FloatArrayAttr;
|
||||
int_array_attr:IntArrayAttr;
|
||||
}
|
||||
|
||||
table Parameter {
|
||||
attributes:[Attribute];
|
||||
}
|
||||
|
||||
root_type Parameter;
|
||||
Reference in New Issue
Block a user