Skip to content

Commit e7ab82e

Browse files
Merge remote-tracking branch 'upstream/master' into dscnn
2 parents 4fedcf2 + 92f9654 commit e7ab82e

File tree

104 files changed

+19131
-1824
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+19131
-1824
lines changed

.gitattributes

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,35 @@
2121
*.jpg binary
2222
*.pdf binary
2323
*.ipynb binary
24+
25+
c_reference/models/q_scut_head_b_face3_model/mbconv1.h filter=lfs diff=lfs merge=lfs -text
26+
c_reference/models/q_scut_head_b_face3_model/mbconv3.h filter=lfs diff=lfs merge=lfs -text
27+
c_reference/models/q_scut_head_b_face3_model/mbconv4.h filter=lfs diff=lfs merge=lfs -text
28+
c_reference/models/q_scut_head_b_face3_model/rnn1.h filter=lfs diff=lfs merge=lfs -text
29+
c_reference/models/q_scut_head_b_face3_model/conv2D.h filter=lfs diff=lfs merge=lfs -text
30+
c_reference/models/q_scut_head_b_face3_model/detection1.h filter=lfs diff=lfs merge=lfs -text
31+
c_reference/models/q_scut_head_b_face3_model/detection2.h filter=lfs diff=lfs merge=lfs -text
32+
c_reference/models/q_scut_head_b_face3_model/detection3.h filter=lfs diff=lfs merge=lfs -text
33+
c_reference/models/q_scut_head_b_face3_model/mbconv2.h filter=lfs diff=lfs merge=lfs -text
34+
c_reference/models/q_scut_head_b_face3_model/rnn2.h filter=lfs diff=lfs merge=lfs -text
35+
c_reference/models/q_scut_head_b_face2_model/detection4.h filter=lfs diff=lfs merge=lfs -text
36+
c_reference/models/q_scut_head_b_face2_model/mbconv10.h filter=lfs diff=lfs merge=lfs -text
37+
c_reference/models/q_scut_head_b_face2_model/mbconv11.h filter=lfs diff=lfs merge=lfs -text
38+
c_reference/models/q_scut_head_b_face2_model/mbconv2.h filter=lfs diff=lfs merge=lfs -text
39+
c_reference/models/q_scut_head_b_face2_model/mbconv5.h filter=lfs diff=lfs merge=lfs -text
40+
c_reference/models/q_scut_head_b_face2_model/mbconv6.h filter=lfs diff=lfs merge=lfs -text
41+
c_reference/models/q_scut_head_b_face2_model/detection1.h filter=lfs diff=lfs merge=lfs -text
42+
c_reference/models/q_scut_head_b_face2_model/detection3.h filter=lfs diff=lfs merge=lfs -text
43+
c_reference/models/q_scut_head_b_face2_model/rnn2.h filter=lfs diff=lfs merge=lfs -text
44+
c_reference/models/q_scut_head_b_face2_model/mbconv7.h filter=lfs diff=lfs merge=lfs -text
45+
c_reference/models/q_scut_head_b_face2_model/mbconv8.h filter=lfs diff=lfs merge=lfs -text
46+
c_reference/models/q_scut_head_b_face2_model/mbconv9.h filter=lfs diff=lfs merge=lfs -text
47+
c_reference/models/q_scut_head_b_face2_model/mbconv14.h filter=lfs diff=lfs merge=lfs -text
48+
c_reference/models/q_scut_head_b_face2_model/mbconv4.h filter=lfs diff=lfs merge=lfs -text
49+
c_reference/models/q_scut_head_b_face2_model/rnn1.h filter=lfs diff=lfs merge=lfs -text
50+
c_reference/models/q_scut_head_b_face2_model/conv2D.h filter=lfs diff=lfs merge=lfs -text
51+
c_reference/models/q_scut_head_b_face2_model/mbconv3.h filter=lfs diff=lfs merge=lfs -text
52+
c_reference/models/q_scut_head_b_face2_model/mbconv13.h filter=lfs diff=lfs merge=lfs -text
53+
c_reference/models/q_scut_head_b_face2_model/mbconv1.h filter=lfs diff=lfs merge=lfs -text
54+
c_reference/models/q_scut_head_b_face2_model/detection2.h filter=lfs diff=lfs merge=lfs -text
55+
c_reference/models/q_scut_head_b_face2_model/mbconv12.h filter=lfs diff=lfs merge=lfs -text

c_reference/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,24 @@
44
include config.mk
55

66
SRC_DIR=src
7+
MODEL_DIR=models
78
TEST_DIR=tests
89

910
all:
1011
$(MAKE) -C $(SRC_DIR)
12+
$(MAKE) -C $(MODEL_DIR)
1113
$(MAKE) -C $(TEST_DIR)
1214

1315
.PHONY: clean cleanest
1416

1517
clean:
1618
rm -f *.o *.gch
1719
$(MAKE) -C $(SRC_DIR) clean
20+
$(MAKE) -C $(MODEL_DIR) clean
1821
$(MAKE) -C $(TEST_DIR) clean
1922

2023
cleanest: clean
2124
rm *~
2225
$(MAKE) -C $(SRC_DIR) cleanest
26+
$(MAKE) -C $(MODEL_DIR) cleanest
2327
$(MAKE) -C $(TEST_DIR) cleanest

c_reference/README.md

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,24 @@
11
# Copyright (c) Microsoft Corporation. All rights reserved.
22
# Licensed under the MIT license.
33

4-
This folder consists of C reference code for some EdgeML operators,
4+
This folder consists of `C` reference code for some `EdgeML` operators,
55
and sample parameter sets and input/output traces to verify them.
6-
The code is intended to compile with gcc on Linux machines,
7-
and is to be adapated as needed for other embedded platforms.
6+
The code is intended to compile with `GCC` on `Linux` machines,
7+
and is to be adapted as needed for other embedded platforms.
8+
9+
## Directory Structure
10+
11+
The `EdgeML/c_reference/` directory is broadly structured into the following sub-directories:
12+
13+
- **include/**: Contains the header files for various lower level operators and layers.
14+
- **models/**: Contains the optimized source code and header files for various models built by stiching together different layers and operators. Also contains the layer weights and hyper-parameters for the corresponding models as well (stored using `Git LFS`).
15+
- **src/**: Contains the optimized source code files for various lower level operators and layers.
16+
- **tests/**: Contains extensive test cases for individual operators and layers, as well as the implemented models. The executables are generated in the main directory itself, while the test scripts and their configurations can be accessed in the appropriate sub-directories.
17+
18+
## Compiling
19+
20+
Run `make` inside the `EdgeML/c_reference/` directory to compile the entire project at once. Alternatively, run `make clean` to discard the previously generated object files and executables. By default, the directory is compiled with loop unrolling and shift operations turned off.
21+
22+
## Running
23+
24+
Head to `c_reference/tests/` directory and execute the test script of your choice. Test patches (wherever required) are currently not included because of license restrictions. Please open an issue / refer to an existing issue for the same.

c_reference/include/quantized_datatypes.h

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,20 @@
66

77
#include <stdint.h>
88

9-
// Macro for input type.
10-
typedef int16_t INT_T;
9+
// Macros for input type.
10+
typedef int8_t Q7_T;
11+
typedef int16_t Q15_T;
12+
typedef int32_t Q31_T;
13+
typedef int64_t Q63_T;
1114
// Macro for unsigned iterator type.
12-
typedef uint16_t ITER_T;
15+
typedef uint32_t ITER_T;
1316
// Macro for signed iterator type.
14-
typedef int16_t S_ITER_T;
15-
// Macro for intermediate buffer type.
16-
typedef int32_t INTM_T;
17-
// Macros for scale variable type.
18-
#ifdef SHIFT
19-
typedef uint8_t SCALE_T;
20-
typedef uint8_t L_SCALE_T;
21-
#else
22-
typedef int16_t SCALE_T;
23-
typedef int32_t L_SCALE_T;
24-
#endif
17+
typedef int32_t S_ITER_T;
18+
// Macro for scale variable type.
19+
typedef int32_t SCALE_T;
2520
// Macro for max value of input type.
26-
#define INT_TMAX 32767
21+
#define Q15_TMAX 32767
2722
// Macro for min value of input type.
28-
#define INT_TMIN -32768
23+
#define Q15_TMIN -32768
2924

3025
#endif

0 commit comments

Comments
 (0)