Dynasty
The release version of Dynasty. We provide codes examples in the example folder.
How to use
See CMakeLists, cpu inferencer codes, cuda inferencer codes for detailed examples.
Mystery Node
Mystery Node is customized onnx node, which has two attributes in hierarchy:
- opid: int. This is to define a kind of customized node.
- type: string. This is to define a type within a certain kind of customized node. This will become handy if the node will have different parameters. For example, one could define a node to perform y = kx + b, and use diffent type for diffent pair of (k,b)
In the example folder, mystery.c has implemented 3 different mystery node, and op0 also make use of 'type' attribute of the mystery node.
Dynasty CPU inference lib has built-in support of mystery node with interface defined in mystery.h in inclulde folder. If user doesn't have any mystery node, user can use mystery.c as in the example folder as the default implemention of that interface, otherwise, the linker will complain it can't find mystery_op0 etc. If user does have the mystery node, he will need to update mystery.h/mystery.c accordingly.
If user wants to provide Kneron with onnx model with mystery nodes in it, he will also need to provide a libary(for mystery.c) and a mystery.h to Kneron. See # build mystery lib section in CMakelists.txt
Contribution and Change Lists
20. Dynasty 3.3.1
- Include ReduceSum in CPU, CUDA
- Merge conv CUDNN implementation into Dynasty CUDA
19. Dynasty 3.3.0
- Include submodule common_header_lib
- Support Tensor as input for inferencer
18. Dynasty 3.2.1
Changes
- Update CUDA interfacer :: Concat Operator to speed it up
17. Dynasty 3.2.0
Changes
- Update PianoInferencer interface : GetInputDimensions/GetOutputDimensions
- Update Floating CUDA Inferencer/Operator: not all operators will allocate space for its output tensor, for example: if a node only has one child, in most cases it will use shared space from InitialiedData, rather than allocating its own space.
16. Dynasty 2.5.1
Changes
- Fix Microsoft ONNX-Runtime inferencer header bugs;
- Add Microsoft ONNX-Runtime inferencer examples;
15. Dynasty 2.5.0
Changes
- Add Microsoft ONNX-Runtime inferencer;
Contribution and Change Lists
Nan Zhou
Manager: Kidd Su
14. Dynasty 2.4.0
Changes
- Add MKL-DNN inferencer;
Contribution and Change Lists
Nan Zhou
Manager: Kidd Su
13. Dynasty 2.3.0
Changes
- Add BIE support;
- Combine CUDA and CUDNN;
- Refactor Inferencer: use chain of responsibilities and template method pattern;
Contribution and Change Lists
Bo Xie: BIE support; Nan Zhou: others;
Manager: Kidd Su
12. Dynasty 2.2.0
Changes
- Combine CUDA and CUDNN;
- Refactor Inferencer: use chain of responsibilities and template method pattern;
Contribution:
Nan Zhou
Manager: Kidd Su
11. Dynasty 2.1.0
Changes
- Add CUDA pad;
- Add corresponding tests;
Contribution:
Shanshan Xiao
Manager: Kidd Su
10. Dynasty 2.0.1
Changes
- Fix logger mutex;
Contribution:
Nan Zhou
Manager: Kidd Su
9. Dynasty 2.0.0
Changes
- Add BIE support (change interfaces);
- Add corresponding tests (correctness of CPU inference using BIE, memcheck of CPU inference using BIE);
Contribution:
Bo Xie, Nan Zhou
Manager: Kidd Su
8. Dynasty 1.2.1
Changes
- Fix dummy CUDNNInferencer bugs on platform without CUDNN;
- Print types as well for unsupported operations;
Contribution:
Nan Zhou
Manager: Kidd Su
7. Dynasty 1.2.0
Features
- Add CUDNNInferencer;
Contribution:
CUDNNInferencer: Nan Zhou
Manager: Kidd Su
6. Dynasty 1.1.0
Changes
- Add all new operations from Renaissance to DynastyCpuVisitor.
- Add tests to verify correctness of all new operations.
- Add support for reading inputs not in bhwc format.
Contribution:
Ryan Han, Nan Zhou
Manager: Kidd Su
5. Dynasty 1.0.4
Changes
- Refactor AttributeParser.
- Fix CPUInferencer out-of-boundary bugs.
Contribution:
Nan Zhou, Ryan Han
Manager: Kidd Su
4. Dynasty 1.0.3
Changes
- Add graceful checking on dimensions of input pixels.
- Fix Flatten bugs in CPUInferencer.
- Remove Graph optimizations in PianoInferencer;
Contribution:
Nan Zhou
Manager: Kidd Su
3. Dynasty 1.0.2
Changes
- Clean floating
blas,gemm, andim2col, using C++ and namespace instead of pure C.
Contribution:
Nan Zhou
Manager: Jenna Wu
2. Dynasty 1.0.1
Changes
- Install headers including "JsonIO.h", "ONNXIO.h", and "UnixFileManager.h".
Contribution:
Nan Zhou
Manager: Jenna Wu
1. Dynasty 1.0.0
Changes
- Selected the design patterns and write codes from scratch;
- Established the testing framework;
- Builder Docker images for both CPU and GPU;
- Finished parts of the operations in CPUInferencer, CUDAInferencer, and SNPEInferencer;
Contribution:
Design Pattern: Yao Zou & Nan Zhou
CPUInferencer: Yunhan Ma & Nan Zhou
CUDAInferencer: Nan Zhou
SNPEInferencer: Yao Zou
Test & CI & Docker: Nan Zhou
CMake: Nan Zhou
Manager: Jenna Wu
Latest Supported Operations:
| Operations | CPU | CUDA | CUDNN | MKL | |
|---|---|---|---|---|---|
| 1 | ConvNode | Y | Y (square kernel) | Y | Y |
| 2 | BNNode | Y | Y | Y | Y |
| 3 | LeakyReluNode | Y | Y | Y | Y |
| 4 | GemmNode | Y | Y | Y | Y |
| 5 | EmptyNode | N | N | N | N |
| 6 | InputNode | Y | Y | Y | Y |
| 7 | ReluNode | Y | Y | Y | Y |
| 8 | MaxPoolNode | Y | Y | Y | Y |
| 9 | AveragePoolNode | Y | Y | Y | Y |
| 10 | FlattenNode | Y | Y | Y | Y |
| 11 | AddNode | Y | Y | Y | Y |
| 12 | MulNode | Y | N | N | Y |
| 13 | ConcatNode | Y | Y | Y | Y |
| 14 | ClipNode | Y | Y | Y | Y |
| 15 | SliceNode | Y | N | N | Y |
| 16 | SliceHeaderNode | N | N | N | N |
| 17 | SliceTailNode | N | N | N | N |
| 18 | BeethovenNode | N | N | N | N |
| 19 | PadNode | Y | Y | Y | Y |
| 20 | ConvTransposeNode | N | N | N | N |
| 21 | UpsampleNode | Y | Y (scale == 2) | Y | Y |
| 22 | TanhNode | Y | Y | Y | Y |
| 23 | SigmoidNode | Y | Y | Y | Y |
| 24 | ReshapeNode | Y | N | N | Y |
| 25 | PReluNode | Y | Y | Y | Y |
| 26 | GlobalAveragePoolNode | Y | Y | Y | Y |
| 27 | GlobalMaxPoolNode | Y | Y | Y | Y |
| 28 | SoftmaxNode | Y | Y | Y | Y |
| 29 | FloorNode | Y | N | N | Y |
| 30 | DropoutNode | Y | N | N | Y |
| 31 | MysteryNode | N | N | N | N |
| 32 | ConstantNode | N | N | N | N |
| 33 | BitShiftNode | N | N | N | N |
| 34 | CastNode | N | N | N | N |
| 35 | DepthToSpaceNode | Y | N | N | Y |
| 36 | DivNode | Y | N | N | Y |
| 37 | EluNode | Y | N | N | Y |
| 38 | ExpNode | Y | N | N | Y |
| 39 | ExpandNode | Y | N | N | Y |
| 40 | GatherNode | Y | N | N | Y |
| 41 | GRUNode | Y | N | N | Y |
| 42 | LpNormalizationNode | Y | N | N | Y |
| 43 | LRNNode | Y | N | N | Y |
| 44 | LSTMNode | Y | N | N | Y |
| 45 | MatMulNode | Y | N | N | Y |
| 46 | MaxRoiPoolNode | Y | N | N | Y |
| 47 | MaxUnpoolNode | Y | N | N | Y |
| 48 | MeanNode | Y | N | N | Y |
| 49 | MinNode | Y | N | N | Y |
| 50 | ModNode | N | N | N | N |
| 51 | MultinomialNode | Y | N | N | Y |
| 52 | NegNode | Y | N | N | Y |
| 53 | NonMaxSuppressionNode | N | N | N | N |
| 54 | NonZeroNode | Y | N | N | Y |
| 55 | NotNode | Y | N | N | Y |
| 56 | OneHotNode | Y | N | N | Y |
| 57 | OrNode | Y | N | N | Y |
| 58 | RandomUniformLikeNode | Y | N | N | Y |
| 59 | SqueezeNode | N | N | N | N |
| 60 | SubNode | Y | N | N | Y |
| 61 | TransposeNode | N | N | N | N |
| 62 | UnsqueezeNode | Y | N | N | Y |