Cleanup rtmemref api (#238)
* Detect llvm-project commit change in utils/clone-mlir.sh and rebuild llvm-project
for zLinux Jenkins build bot
* Cleanup RtMemRef API
- use forward declaration to hide private data fields
- RtMemRef.h: external user header, C/C++
- _RtMemRef.h: internal user header, C++ only
- RtMemRef.hpp and RtMemRef.cpp: implementation header and file
- add external APIs
OrderedRtMemRefDict *ormrd_create(RtMemRef **rmrs, int n)
RtMemRef **ormrd_getRmrs(OrderedRtMemRefDict *ormrd)
int ormrd_getNumOfRmrs(OrderedRtMemRefDict *ormrd)
for creating and querying OrderedRtMemRefDict with RtMemRef arrays
- data buffer installed by rmr_setData() will be managed by user
- unique_ptr<RtMemRef> must use custom deleter <RtMemRef,decltype(&rmr_destroy)>
* See if I have write access.
* Remove test CMake code.
* Use new API.
* Format code.
* Format code & rename variables for readability.
* Remove used API spec.
* Rename OrderedRtMemRefDict -> RtMemRefList, _dataMalloc -> _owningData.
* OrderedRtMemRefDict -> RtMemRefList
* Update KrnlToLLVM.cpp
* Trigger Jenkins
* Restart Jenkins
* OrderedRtMemRefDict -> RtRmrRefList
* More OrderedRtMemRefDict -> RtMemRefList.
* Format jni wrapper.
* Rename API functions to maintain stylistic consistency.
* Bug fix.
* Bug fix.
* Format code.
* Fix RtMemRefUtils.
* Format code.
* Using llvm function naming scheme.
* Rename runtime api file name to project name (onnx-mlir) as per convention.
* Include the new runtime header file.
* Reflect api header file name change in build script.
* Bug fix.
* Remove C++ code.
* Revert "Remove C++ code."
This reverts commit b217dfabae99e42db30721600cb5507866d4dc98.
* Clarify memory management responsibility.
* Add constructor to specify name & data ownership.
* Include stdbool.
* Remove dictionary semantics from RtMemRefList
* Bug fix.
* Format code.
* Format code.
* Use macro to define database of metadata.
* Prevent formatter from acting on metadata decl.
* Nit.
* Restore backend unit tests.
* Use spaces instead of tabs for better formatting.
* Use explicit template instantiation.
* Update RtMemRef struct doc.
* Make runtime compilable both in c and c++ mode.
Build two versions of the runtime library, one c version as the user-facing c runtime, and one c++ version as the one used inside this project.
* Bug fix, avoid stack allocation for output rmr list.
* Change _dyn_entry_point_main_graph -> run_main_graph for better memorability.
* Write a complete introductory tutorial on c99 Runtime and a test for it.
* Add onnx installation as dependency.
* Use target_include_directory to avoid installation.
* Format code.
* Fix cmake target_include_directories.
* Address compiler warning.
* First pass of RtMemRef->OMTensor.
* Second pass of RtMemRef -> OMTensor.
* nit, omtList -> omTensorList.
* omt -> omTensor for clarity.
* Rename OnnxMlirInternal.h -> OnnxMlirRuntime.hpp because there's no internal/external API, only C/C++ API.
* Format code.
* Restructure Runtime source code and move header -> /include and test -> /test/unit.
* Bugfix.
* Format code.
* Add unit test for OMTensor ctor.
* Update JNI CMake include directory.
* Bugfix.
* No need to re-declare ONNX types.
* Disable runtime doc test on non-x86 platforms.
* Rename OMTensor fields to be more sensible.
* Fix data type mismatch.
* size_t -> int64_t, prefer fixed width integers.
* Use consistent header guard style.
* Further tweak OMTensor API.
* Bugfix.
* Bugfix.
* Format code.
* Add doxygen config file.
* Tweak OMTensor API.
* Tweak API doc, hide OMTensorList implementation.
* Format code.
* Add new documentation item for Runtime API.
* Hide internal use only API declarations, move their comments to their implementations.
* Clarify ownership semantics in relevant API documentations.
* Fix PyRuntime.
* Remove alignment concerns from public API and include explaination of alignment issue in struct OMTensor definition.
* Print out unsupported numpy dtype.
* Use preferred way of type comparison in pybind11.
* Debug s390x issue.
* Remove debug code.
* Clarify semantics of strides/shape setter/getter, use \brief to include short description of API function.
* Improve documentation.
* Single out unpolished C++ API declarations.
* Clarify OMTensorList API.
* Bugfix.
* Bugfix.
* Assert after malloc.
* Handle malloc failures.
* Nit.
* Tweak legal notices.
* Format code.
* Remove doxygen generated files.
* Tweak legal notice format.
* Upgrade Cython
Numpy installation depends on Cython.
Co-authored-by: Tian Jin <tjingrant@gmail.com>
2020-10-10 22:32:09 +08:00
|
|
|
import onnx
|
|
|
|
from onnx import helper
|
|
|
|
from onnx import AttributeProto, TensorProto, GraphProto
|
|
|
|
|
|
|
|
# Create one input (ValueInfoProto)
|
|
|
|
X1 = helper.make_tensor_value_info('X1', TensorProto.FLOAT, [3, 2])
|
|
|
|
X2 = helper.make_tensor_value_info('X2', TensorProto.FLOAT, [3, 2])
|
|
|
|
|
|
|
|
# Create one output (ValueInfoProto)
|
|
|
|
Y = helper.make_tensor_value_info('Y', TensorProto.FLOAT, [3, 2])
|
|
|
|
|
|
|
|
# Create a node (NodeProto) - This is based on Pad-11
|
|
|
|
node_def = helper.make_node(
|
|
|
|
'Add', # node name
|
|
|
|
['X1', 'X2'], # inputs
|
|
|
|
['Y'], # outputs
|
|
|
|
)
|
|
|
|
|
|
|
|
# Create the graph (GraphProto)
|
|
|
|
graph_def = helper.make_graph(
|
|
|
|
[node_def],
|
|
|
|
'test-model',
|
|
|
|
[X1, X2],
|
|
|
|
[Y],
|
|
|
|
)
|
|
|
|
|
|
|
|
# Create the model (ModelProto)
|
|
|
|
model_def = helper.make_model(graph_def, producer_name='onnx-example')
|
|
|
|
|
|
|
|
print('The model is:\n{}'.format(model_def))
|
|
|
|
onnx.checker.check_model(model_def)
|
|
|
|
onnx.save(model_def, "add.onnx")
|
|
|
|
print('The model is checked!')
|