155 return std::make_unique<RefActivationWorkload>(*activationQueueDescriptor,
info);
162 return std::make_unique<RefAdditionWorkload<int32_t>>(*additionQueueDescriptor,
info);
166 return std::make_unique<RefAdditionWorkload<float>>(*additionQueueDescriptor,
info);
172 return std::make_unique<RefArgMinMaxWorkload>(*argMinMaxQueueDescriptor,
info);
177 return std::make_unique<RefBatchMatMulWorkload>(*batchMatMulQueueDescriptor,
info);
182 return std::make_unique<RefBatchNormalizationWorkload>(*batchNormQueueDescriptor,
info);
186 auto batchToSpaceNdQueueDescriptor
188 return std::make_unique<RefBatchToSpaceNdWorkload>(*batchToSpaceNdQueueDescriptor,
info);
193 return std::make_unique<RefBroadcastToWorkload>(*broadcastToQueueDescriptor,
info);
198 return std::make_unique<RefCastWorkload>(*castQueueDescriptor,
info);
202 auto channelShuffleQueueDescriptor
204 return std::make_unique<RefChannelShuffleWorkload>(*channelShuffleQueueDescriptor,
info);
209 return std::make_unique<RefComparisonWorkload>(*comparisonQueueDescriptor,
info);
214 return std::make_unique<RefConcatWorkload>(*concatQueueDescriptor,
info);
219 return std::make_unique<RefConstantWorkload>(*constantQueueDescriptor,
info);
223 auto convertFp16ToFp32QueueDescriptor
225 return std::make_unique<RefConvertFp16ToFp32Workload>(*convertFp16ToFp32QueueDescriptor,
info);
229 auto convertFp32ToFp16QueueDescriptor
231 return std::make_unique<RefConvertFp32ToFp16Workload>(*convertFp32ToFp16QueueDescriptor,
info);
236 return std::make_unique<RefConvolution2dWorkload>(*convolution2dQueueDescriptor,
info);
241 return std::make_unique<RefConvolution3dWorkload>(*convolution3dQueueDescriptor,
info);
248 return std::make_unique<RefDebugBFloat16Workload>(*debugQueueDescriptor,
info);
252 return std::make_unique<RefDebugFloat16Workload>(*debugQueueDescriptor,
info);
256 return std::make_unique<RefDebugQSymmS16Workload>(*debugQueueDescriptor,
info);
260 return std::make_unique<RefDebugQSymmS8Workload>(*debugQueueDescriptor,
info);
264 return std::make_unique<RefDebugQAsymmU8Workload>(*debugQueueDescriptor,
info);
268 return std::make_unique<RefDebugQAsymmS8Workload>(*debugQueueDescriptor,
info);
272 return std::make_unique<RefDebugSigned32Workload>(*debugQueueDescriptor,
info);
276 return std::make_unique<RefDebugSigned64Workload>(*debugQueueDescriptor,
info);
280 return std::make_unique<RefDebugBooleanWorkload>(*debugQueueDescriptor,
info);
282 return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(*debugQueueDescriptor,
info);
287 return std::make_unique<RefDepthToSpaceWorkload>(*depthToSpaceQueueDescriptor,
info);
291 auto depthwiseConvolution2DQueueDescriptor
293 return std::make_unique<RefDepthwiseConvolution2dWorkload>(*depthwiseConvolution2DQueueDescriptor,
info);
298 return std::make_unique<RefDequantizeWorkload>(*dequantizeQueueDescriptor,
info);
302 auto detectionPostProcessQueueDescriptor
304 return std::make_unique<RefDetectionPostProcessWorkload>(*detectionPostProcessQueueDescriptor,
info);
311 return std::make_unique<RefDivisionWorkload<int32_t>>(*divisionQueueDescriptor,
info);
315 return std::make_unique<RefDivisionWorkload<float>>(*divisionQueueDescriptor,
info);
320 auto elementwiseBinaryQueueDescriptor
322 return std::make_unique<RefElementwiseBinaryWorkload>(*elementwiseBinaryQueueDescriptor,
info);
326 auto elementwiseUnaryQueueDescriptor
330 return std::make_unique<RefLogicalUnaryWorkload>(*elementwiseUnaryQueueDescriptor,
info);
332 return std::make_unique<RefElementwiseUnaryWorkload>(*elementwiseUnaryQueueDescriptor,
info);
336 auto fakeQuantizationQueueDescriptor
338 return std::make_unique<RefFakeQuantizationFloat32Workload>(*fakeQuantizationQueueDescriptor,
info);
343 return std::make_unique<RefFillWorkload>(*fillQueueDescriptor,
info);
354 return std::make_unique<RefFloorWorkload>(*floorQueueDescriptor,
info);
359 auto fullyConnectedQueueDescriptor
361 return std::make_unique<RefFullyConnectedWorkload>(*fullyConnectedQueueDescriptor,
info);
366 return std::make_unique<RefGatherWorkload>(*gatherQueueDescriptor,
info);
371 return std::make_unique<RefGatherNdWorkload>(*gatherNdQueueDescriptor,
info);
376 if (
info.m_InputTensorInfos.empty() )
380 if (
info.m_OutputTensorInfos.empty())
384 if (
info.m_InputTensorInfos[0].GetNumBytes() !=
info.m_OutputTensorInfos[0].GetNumBytes())
387 "data input and output differ in byte count.");
389 return std::make_unique<CopyMemGenericWorkload>(*inputQueueDescriptor,
info);
393 auto instanceNormalizationQueueDescriptor
395 return std::make_unique<RefInstanceNormalizationWorkload>(*instanceNormalizationQueueDescriptor,
info);
399 auto l2NormalizationQueueDescriptor
401 return std::make_unique<RefL2NormalizationWorkload>(*l2NormalizationQueueDescriptor,
info);
406 return std::make_unique<RefLogicalBinaryWorkload>(*logicalBinaryQueueDescriptor,
info);
411 return std::make_unique<RefLogSoftmaxWorkload>(*logSoftmaxQueueDescriptor,
info);
416 return std::make_unique<RefLstmWorkload>(*lstmQueueDescriptor,
info);
423 return std::make_unique<RefMaximumWorkload<int32_t>>(*maximumQueueDescriptor,
info);
427 return std::make_unique<RefMaximumWorkload<float>>(*maximumQueueDescriptor,
info);
433 return std::make_unique<RefMeanWorkload>(*meanQueueDescriptor,
info);
442 return std::make_unique<CopyMemGenericWorkload>(*memCopyQueueDescriptor,
info);
451 return std::make_unique<ImportMemGenericWorkload>(*memImportQueueDescriptor,
info);
458 return std::make_unique<RefMinimumWorkload<int32_t>>(*minimumQueueDescriptor,
info);
462 return std::make_unique<RefMinimumWorkload<float>>(*minimumQueueDescriptor,
info);
467 auto multiplicationQueueDescriptor
471 return std::make_unique<RefMultiplicationWorkload<int32_t>>(*multiplicationQueueDescriptor,
info);
475 return std::make_unique<RefMultiplicationWorkload<float>>(*multiplicationQueueDescriptor,
info);
481 return std::make_unique<RefNormalizationWorkload>(*normalizationQueueDescriptor,
info);
486 if (
info.m_InputTensorInfos.empty() )
490 if (
info.m_OutputTensorInfos.empty())
494 if (
info.m_InputTensorInfos[0].GetNumBytes() !=
info.m_OutputTensorInfos[0].GetNumBytes())
497 "differ in byte count.");
499 return std::make_unique<CopyMemGenericWorkload>(*outputQueueDescriptor,
info);
504 return std::make_unique<RefPadWorkload>(*padQueueDescriptor,
info);
511 return std::make_unique<RefPermuteQSymm16Workload>(*permuteQueueDescriptor,
info);
515 return std::make_unique<RefPermuteBFloat16Workload>(*permuteQueueDescriptor,
info);
519 return std::make_unique<RefPermuteQAsymmS8Workload>(*permuteQueueDescriptor,
info);
527 return std::make_unique<RefPooling2dWorkload>(*pooling2dQueueDescriptor,
info);
532 return std::make_unique<RefPooling3dWorkload>(*pooling3dQueueDescriptor,
info);
541 return std::make_unique<RefPreluWorkload>(*preluQueueDescriptor,
info);
546 return std::make_unique<RefQLstmWorkload>(*qlstmQueueDescriptor,
info);
551 return std::make_unique<RefQuantizeWorkload>(*quantizeQueueDescriptor,
info);
556 return std::make_unique<RefRankWorkload>(*rankQueueDescriptor,
info);
561 return std::make_unique<RefReduceWorkload>(*reduceQueueDescriptor,
info);
566 return std::make_unique<RefReshapeWorkload>(*reshapeQueueDescriptor,
info);
571 return std::make_unique<RefResizeWorkload>(*resizeQueueDescriptor,
info);
576 return std::make_unique<RefReverseV2Workload>(*reverseV2QueueDescriptor,
info);
581 return std::make_unique<RefScatterNdWorkload>(*scatterQueueDescriptor,
info);
586 return std::make_unique<RefShapeWorkload>(*shapeQueueDescriptor,
info);
591 return std::make_unique<RefSliceWorkload>(*sliceQueueDescriptor,
info);
596 return std::make_unique<RefSoftmaxWorkload>(*softmaxQueueDescriptor,
info);
600 auto spaceToBatchNdQueueDescriptor
602 return std::make_unique<RefSpaceToBatchNdWorkload>(*spaceToBatchNdQueueDescriptor,
info);
607 return std::make_unique<RefSpaceToDepthWorkload>(*spaceToDepthQueueDescriptor,
info);
612 return std::make_unique<RefSplitterWorkload>(*splitterQueueDescriptor,
info);
617 return std::make_unique<RefStackWorkload>(*stackQueueDescriptor,
info);
622 return std::make_unique<RefStridedSliceWorkload>(*stridedSliceQueueDescriptor,
info);
629 return std::make_unique<RefSubtractionWorkload<int32_t>>(*subtractionQueueDescriptor,
info);
633 return std::make_unique<RefSubtractionWorkload<float>>(*subtractionQueueDescriptor,
info);
639 return std::make_unique<RefTileWorkload>(*tileQueueDescriptor,
info);
646 return std::make_unique<RefTransposeQSymm16Workload>(*transposeQueueDescriptor,
info);
650 return std::make_unique<RefTransposeBFloat16Workload>(*transposeQueueDescriptor,
info);
654 return std::make_unique<RefTransposeQAsymmS8Workload>(*transposeQueueDescriptor,
info);
658 (*transposeQueueDescriptor,
info);
662 auto transposeConvolution2dQueueDescriptor
664 return std::make_unique<RefTransposeConvolution2dWorkload>(*transposeConvolution2dQueueDescriptor,
info);
668 auto unidirectionalSequenceLstmQueueDescriptor
670 return std::make_unique<RefUnidirectionalSequenceLstmWorkload>(*unidirectionalSequenceLstmQueueDescriptor,