6.5 KiB
API Changes
Deprecation Notice
| Deprecation Begins | June 1, 2020 |
| Removal Date | December 1, 2020 |
Starting with the OpenVINO™ toolkit 2020.2 release, all of the features previously available through nGraph have been merged into the OpenVINO™ toolkit. As a result, all the features previously available through ONNX RT Execution Provider for nGraph have been merged with ONNX RT Execution Provider for OpenVINO™ toolkit.
Therefore, ONNX RT Execution Provider for nGraph will be deprecated starting June 1, 2020 and will be completely removed on December 1, 2020. Users are recommended to migrate to the ONNX RT Execution Provider for OpenVINO™ toolkit as the unified solution for all AI inferencing on Intel® hardware.
Op Definition
- Every Op class must declare a
static constexpr NodeTypeInfo type_info{name, version}in the class definition and define it in the .cpp file. See any op definition for an example. - The boolean function
is_type<T>is for testing if a node is the opT. T as_type_ptr<T>()andT as_type<T>()will upcastNodeto an explicit op class if it is of classT, ornullptrif it is not.
Backend library interface
- Each backend
BACKENDneeds to define the macro${BACKEND}_APIappropriately to import symbols referenced from outside the library and to export them from within the library. See any of the${backend}_backend_visibility.hppfiles for an example. - The
CMakeLists.txtfile for a backend defines${BACKEND}_BACKEND_DLL_EXPORTS.target_compile_definitions(${backend}_backend PRIVATE ${BACKEND}_BACKEND_DLL_EXPORTS) - Each backend must define a function
ngraph_register_${backend}_backendthat registers a backend constructor function and ensures that initializations are performed.ngraph/src/runtime/cpu/cpu_backend.cpphas an example that includes initializations. Remove the old backend constructor code.
Passes
LikeReplacementpass must be run by all transformers.ngraph::pass::FusionTypeis now an enum class. Constant values defined byFusionTypeare created for backward compatibility and will be removed in future releases.
Nodes, Parameters
Nodesis nowNodeVectorParametersis nowParameterVectorNodeVector,ParameterVector,AxisVector,AxisSet,Shape,Stride,Coordinate, andCoordinateDiffare now classes, not type aliases.PrimaryTensorViewis nowTensorView(and will merge intoTensor)
Changes to ops
-
The namespace
ngraph::opis only for actual ops. Helpers have been moved intongraph::op::util:BinaryElementwiseArithmeticBinaryElementwiseComparisonBinaryElementwiseRequiresTensorViewArgsUnaryElementwiseArithmeticUnaryElementwiseOps defined outside of nGraph core will need to get the base class fromngraph::op::utiland change the include file to#include "ngraph/ops/util/requires_tensor_view_args.hpp", etc.
See any of the core ops for an example.
Changes to convolution and pooling ops
-
Backprop ops have been added for convolution ops.
-
The convolution and pooling ops have had several methods/fields renamed, to reflect a shift in terminology from "images" to "data". Generally this just means that you will have to
s/image_batch/data_batch/ands/image_dilation_strides/data_dilation_strides/. -
The following functions have been removed:
AvgPool:get_channel_count get_input_image_physical_shape get_input_image_virtual_shape get_output_image_shape get_batch_size get_image_dimension_countMaxPool:get_channel_count get_input_image_shape get_output_image_shape get_batch_size get_image_dimension_countConvolution:get_input_channel_count get_output_channel_count get_input_image_physical_shape get_input_image_virtual_shape get_output_image_shape get_window_physical_shape get_window_virtual_shape get_batch_size get_image_dimension_count
All of the above information can be inferred from the shapes and parameters of the op.
-
The
AvgPooloperator has a new attribute governing whether or not padding-region values are considered when computing a given window's average:include_padding_in_avg_computation. One of the class constructors adds this to the parameter list, and the others use a default value offalsewhich matches the old behavior.
Negative convolution padding
Convolution now allows negative padding. This means that the padding_below and padding_above
arguments now take type CoordinateDiff instead of Shape. CoordinateDiff is an alias for
std::vector<std::ptrdiff_t>, which "is like size_t but is allowed to be negative". Callers may
need to be adapted.
Changes to Concat op
get_concatenation_axiswas renamed toget_axis. In order to provide backward compatibilityget_concatenation_axisis now alis ofget_axismethodset_concatenation_axiswas renamed toset_axis. In order to provide backward compatibilityset_concatenation_axisis now alis ofset_axismethod
Parameter and Function no longer take a type argument.
Changes to Tensor read and write methods
The read and write methods on ngraph::runtime::Tensor which take a tensor_offset as the
second of three arguments have been deprecated. The replacement read and write methods take
two arguments, the buffer pointer and the size. For any references to the deprecated methods
remove the second argument, the tensor offset, to update to the new API. These old read/write
methods have been decorated with deprecated warnings which may be enabled by setting
-DNGRAPH_DEPRECATED_ENABLE=ON.
To update, remove the passed argument. For example,
// Old
make_shared<Parameter>(make_shared<descriptor::TensorViewType>(element::f32, Shape{2, 4}));
// New (remove TensorViewType)
make_shared<Parameter>(element::f32, Shape{2, 4});
// Old
make_shared<Function>(results, result_type, parameters);
// New
make_shared<Function>(results, parameters);
The runtime::Tensor methods to get_tensor<> and write(std::vector&) have been removed to the unit test directory under utils/test_tool.hpp read_vector and write_vector.
Changes to reshape op utils
Utility functions from src/ngraph/op/util/reshape.hpp, placed at namespace ngraph::op::util:
reshapereorder_axestransposeflatten
Are moved to new location: src/ngraph/builder/reshape.hpp to namespace ngraph::builder.