13 #include <boost/assert.hpp> 17 #include <unordered_map> 23 void CopyErrorMessage(
char* truncatedString,
const char* fullString,
size_t maxLength)
25 if(truncatedString !=
nullptr)
27 std::snprintf(truncatedString, maxLength,
"%s", fullString);
38 #define FORWARD_LAYER_SUPPORT_FUNC(backendId, func, ...) \ 39 std::string reasonIfUnsupportedFull; \ 42 auto const& backendRegistry = BackendRegistryInstance(); \ 43 if (!backendRegistry.IsBackendRegistered(backendId)) \ 45 std::stringstream ss; \ 46 ss << __func__ << " is not supported on " << backendId << " because this backend is not registered."; \ 47 reasonIfUnsupportedFull = ss.str(); \ 48 isSupported = false; \ 52 auto factoryFunc = backendRegistry.GetFactory(backendId); \ 53 auto backendObject = factoryFunc(); \ 54 auto layerSupportObject = backendObject->GetLayerSupport(); \ 55 isSupported = layerSupportObject->func(__VA_ARGS__, Optional<std::string&>(reasonIfUnsupportedFull)); \ 56 CopyErrorMessage(reasonIfUnsupported, reasonIfUnsupportedFull.c_str(), reasonIfUnsupportedMaxLength); \ 58 } catch (const InvalidArgumentException &e) { \ 60 throw InvalidArgumentException(e, "Failed to check layer support", CHECK_LOCATION()); \ 73 char* reasonIfUnsupported,
74 size_t reasonIfUnsupportedMaxLength)
83 char* reasonIfUnsupported,
84 size_t reasonIfUnsupportedMaxLength)
98 char* reasonIfUnsupported,
99 size_t reasonIfUnsupportedMaxLength)
112 char* reasonIfUnsupported,
113 size_t reasonIfUnsupportedMaxLength)
130 char* reasonIfUnsupported,
131 size_t reasonIfUnsupportedMaxLength)
141 std::vector<const TensorInfo*> inputs,
144 char* reasonIfUnsupported,
145 size_t reasonIfUnsupportedMaxLength)
147 BOOST_ASSERT(inputs.size() > 0);
154 char* reasonIfUnsupported,
155 size_t reasonIfUnsupportedMaxLength)
163 char* reasonIfUnsupported,
164 size_t reasonIfUnsupportedMaxLength)
172 char* reasonIfUnsupported,
173 size_t reasonIfUnsupportedMaxLength)
184 char* reasonIfUnsupported,
185 size_t reasonIfUnsupportedMaxLength)
193 char* reasonIfUnsupported,
194 size_t reasonIfUnsupportedMaxLength)
205 char* reasonIfUnsupported,
206 size_t reasonIfUnsupportedMaxLength)
223 IsDilatedDepthwiseConvolutionSupported,
235 char* reasonIfUnsupported,
236 size_t reasonIfUnsupportedMaxLength)
245 char* reasonIfUnsupported,
246 size_t reasonIfUnsupportedMaxLength);
252 char* reasonIfUnsupported,
253 size_t reasonIfUnsupportedMaxLength)
262 char* reasonIfUnsupported,
263 size_t reasonIfUnsupportedMaxLength)
266 IsComparisonSupported,
276 char* reasonIfUnsupported,
277 size_t reasonIfUnsupportedMaxLength)
285 char* reasonIfUnsupported,
286 size_t reasonIfUnsupportedMaxLength)
302 char* reasonIfUnsupported,
303 size_t reasonIfUnsupportedMaxLength)
312 char* reasonIfUnsupported,
313 size_t reasonIfUnsupportedMaxLength)
322 char* reasonIfUnsupported,
323 size_t reasonIfUnsupportedMaxLength)
326 IsComparisonSupported,
335 char* reasonIfUnsupported,
336 size_t reasonIfUnsupportedMaxLength)
346 char* reasonIfUnsupported,
347 size_t reasonIfUnsupportedMaxLength)
357 size_t reasonIfUnsupportedMaxLength)
361 scratchBuffer, outputStateOut, cellStateOut,
362 output, descriptor, paramsInfo);
369 char* reasonIfUnsupported,
370 size_t reasonIfUnsupportedMaxLength)
379 char* reasonIfUnsupported,
380 size_t reasonIfUnsupportedMaxLength)
388 char *reasonIfUnsupported,
389 size_t reasonIfUnsupportedMaxLength)
397 char *reasonIfUnsupported,
398 size_t reasonIfUnsupportedMaxLength)
407 char* reasonIfUnsupported,
408 size_t reasonIfUnsupportedMaxLength)
418 char* reasonIfUnsupported,
419 size_t reasonIfUnsupportedMaxLength)
421 BOOST_ASSERT(inputs.size() > 0);
432 char* reasonIfUnsupported,
433 size_t reasonIfUnsupportedMaxLength)
442 char* reasonIfUnsupported,
443 size_t reasonIfUnsupportedMaxLength)
452 char* reasonIfUnsupported,
453 size_t reasonIfUnsupportedMaxLength)
460 char* reasonIfUnsupported,
461 size_t reasonIfUnsupportedMaxLength)
470 char* reasonIfUnsupported,
471 size_t reasonIfUnsupportedMaxLength)
480 char* reasonIfUnsupported,
481 size_t reasonIfUnsupportedMaxLength)
493 char* reasonIfUnsupported,
494 size_t reasonIfUnsupportedMaxLength)
498 cellStateOut, output, paramsInfo);
505 char* reasonIfUnsupported,
506 size_t reasonIfUnsupportedMaxLength)
515 char* reasonIfUnsupported,
516 size_t reasonIfUnsupportedMaxLength)
525 char* reasonIfUnsupported,
526 size_t reasonIfUnsupportedMaxLength)
535 char* reasonIfUnsupported,
536 size_t reasonIfUnsupportedMaxLength)
545 char* reasonIfUnsupported,
546 size_t reasonIfUnsupportedMaxLength)
555 char* reasonIfUnsupported,
556 size_t reasonIfUnsupportedMaxLength)
561 const TensorShape& outputShape = output.GetShape();
571 char* reasonIfUnsupported,
572 size_t reasonIfUnsupportedMaxLength)
575 IsElementwiseUnarySupported,
585 char* reasonIfUnsupported,
586 size_t reasonIfUnsupportedMaxLength)
595 char* reasonIfUnsupported,
596 size_t reasonIfUnsupportedMaxLength)
605 char* reasonIfUnsupported,
606 size_t reasonIfUnsupportedMaxLength)
615 char* reasonIfUnsupported,
616 size_t reasonIfUnsupportedMaxLength)
625 const std::vector<std::reference_wrapper<TensorInfo>>& outputs,
627 char* reasonIfUnsupported,
628 size_t reasonIfUnsupportedMaxLength)
637 char* reasonIfUnsupported,
638 size_t reasonIfUnsupportedMaxLength)
647 char* reasonIfUnsupported,
648 size_t reasonIfUnsupportedMaxLength)
658 char* reasonIfUnsupported,
659 size_t reasonIfUnsupportedMaxLength)
A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer.
bool IsBatchToSpaceNdSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const BatchToSpaceNdDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool CheckTensorDataTypesEqual(const TensorInfo &input0, const TensorInfo &input1)
uint32_t m_DilationX
Dilation factor value for width dimension.
A NormalizationDescriptor for the NormalizationLayer.
bool IsFullyConnectedSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const TensorInfo &weights, const TensorInfo &biases, const FullyConnectedDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsMemCopySupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
uint32_t m_TargetHeight
Target height value.
A FakeQuantizationDescriptor for the FakeQuantizationLayer.
bool IsRsqrtSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsResizeBilinearSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A PadDescriptor for the PadLayer.
An ActivationDescriptor for the ActivationLayer.
bool IsMergeSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A BatchNormalizationDescriptor for the BatchNormalizationLayer.
bool IsActivationSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const ActivationDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsReshapeSupported(const BackendId &backend, const TensorInfo &input, const ReshapeDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsBatchNormalizationSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const TensorInfo &mean, const TensorInfo &var, const TensorInfo &beta, const TensorInfo &gamma, const BatchNormalizationDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsQuantizedLstmSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &previousCellStateIn, const TensorInfo &previousOutputIn, const TensorInfo &cellStateOut, const TensorInfo &output, const QuantizedLstmInputParamsInfo ¶msInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsSpaceToBatchNdSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const SpaceToBatchNdDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsDebugSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A L2NormalizationDescriptor for the L2NormalizationLayer.
A ViewsDescriptor for the SplitterLayer. Descriptor to configure the splitting process. Number of Views must be equal to the number of outputs, and their order must match - e.g. first view corresponds to the first output, second view to the second output, etc.
bool IsSpaceToDepthSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const SpaceToDepthDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsGreaterSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsStridedSliceSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const StridedSliceDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A SpaceToDepthDescriptor for the SpaceToDepthLayer.
A ReshapeDescriptor for the ReshapeLayer.
A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer.
bool IsMaximumSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnSupported=nullptr, size_t reasonIfUnSupportedMaxLength=0)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsConcatSupported(const BackendId &backend, const std::vector< const TensorInfo *> inputs, const TensorInfo &output, const OriginsDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsDivisionSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsAdditionSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
An LstmDescriptor for the LstmLayer.
bool IsPreluSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &alpha, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsFloorSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsSplitterSupported(const BackendId &backend, const TensorInfo &input, const ViewsDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
A FullyConnectedDescriptor for the FullyConnectedLayer.
bool IsSoftmaxSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const SoftmaxDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsSwitchSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output0, const TensorInfo &output1, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsNormalizationSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const NormalizationDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsGatherSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)
#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)
bool IsL2NormalizationSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const L2NormalizationDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A SoftmaxDescriptor for the SoftmaxLayer.
uint32_t m_TargetWidth
Target width value.
bool IsInputSupported(const BackendId &backend, const TensorInfo &input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsOutputSupported(const BackendId &backend, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsLstmSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &outputStateIn, const TensorInfo &cellStateIn, const TensorInfo &scratchBuffer, const TensorInfo &outputStateOut, const TensorInfo &cellStateOut, const TensorInfo &output, const LstmDescriptor &descriptor, const LstmInputParamsInfo ¶msInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsConvertFp16ToFp32Supported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsPooling2dSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const Pooling2dDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsFakeQuantizationSupported(const BackendId &backend, const TensorInfo &input, const FakeQuantizationDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsMeanSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const MeanDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
DataType GetDataType() const
bool IsConstantSupported(const BackendId &backend, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsConvolution2dSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const Convolution2dDescriptor &descriptor, const TensorInfo &weights, const Optional< TensorInfo > &biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsMergerSupported(const BackendId &backend, const std::vector< const TensorInfo *> inputs, const TensorInfo &output, const OriginsDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A Pooling2dDescriptor for the Pooling2dLayer.
bool IsConvertFp32ToFp16Supported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsPermuteSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const PermuteDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsDepthwiseConvolutionSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const DepthwiseConvolution2dDescriptor &descriptor, const TensorInfo &weights, const Optional< TensorInfo > &biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsEqualSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
A PermuteDescriptor for the PermuteLayer.
A Convolution2dDescriptor for the Convolution2dLayer.
A MeanDescriptor for the MeanLayer.
bool IsMultiplicationSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer.
#define ARMNN_DEPRECATED_MSG(message)
bool IsResizeSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const ResizeDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
const TensorShape & GetShape() const
An ArgMinMaxDescriptor for ArgMinMaxLayer.
bool IsSubtractionSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsDequantizeSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsMemImportSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)
A ResizeDescriptor for the ResizeLayer.
bool IsPadSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const PadDescriptor &descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
bool IsMinimumSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)
Deprecated in favor of IBackend and ILayerSupport interfaces.
A ComparisonDescriptor for the ComparisonLayer.
bool IsArgMinMaxSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, const ArgMinMaxDescriptor &descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)
bool IsDetectionPostProcessSupported(const BackendId &backend, const TensorInfo &input0, const TensorInfo &input1, const DetectionPostProcessDescriptor &descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)
bool IsQuantizeSupported(const BackendId &backend, const TensorInfo &input, const TensorInfo &output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)
An OriginsDescriptor for the ConcatLayer. Descriptor to configure the concatenation process...
uint32_t m_DilationY
Dilation factor value for height dimension.
#define ARMNN_NO_DEPRECATE_WARN_END
A StridedSliceDescriptor for the StridedSliceLayer.