256 return MakeWorkload<ClActivationWorkload>(*activationQueueDescriptor,
info, m_CLCompileContext);
261 return MakeWorkload<ClAdditionWorkload>(*additionQueueDescriptor,
info, m_CLCompileContext);
266 return MakeWorkload<ClArgMinMaxWorkload>(*argMinMaxQueueDescriptor,
info, m_CLCompileContext);
271 return std::make_unique<ClBatchMatMulWorkload>(*batchMatMulQueueDescriptor,
info, m_CLCompileContext);
275 auto batchNormalizationQueueDescriptor
277 return MakeWorkload<ClBatchNormalizationFloatWorkload, NullWorkload>
278 (*batchNormalizationQueueDescriptor,
info, m_CLCompileContext);
282 auto batchToSpaceNdQueueDescriptor
284 return MakeWorkload<ClBatchToSpaceNdWorkload>(*batchToSpaceNdQueueDescriptor,
info, m_CLCompileContext);
289 return MakeWorkload<ClCastWorkload>(*castQueueDescriptor,
info, m_CLCompileContext);
293 auto channelShuffleQueueDescriptor
295 return MakeWorkload<ClChannelShuffleWorkload>(*channelShuffleQueueDescriptor,
info, m_CLCompileContext);
300 return MakeWorkload<ClComparisonWorkload>(*comparisonQueueDescriptor,
info, m_CLCompileContext);
305 return MakeWorkload<ClConcatWorkload>(*concatQueueDescriptor,
info, m_CLCompileContext);
310 return MakeWorkload<ClConstantWorkload>(*constantQueueDescriptor,
info, m_CLCompileContext);
314 auto convertFp16ToFp32QueueDescriptor
316 return MakeWorkload<ClConvertFp16ToFp32Workload>(*convertFp16ToFp32QueueDescriptor,
322 auto convertFp32ToFp16QueueDescriptor
324 return MakeWorkload<ClConvertFp32ToFp16Workload>(*convertFp32ToFp16QueueDescriptor,
331 bool isFastMathEnabled =
false;
332 if (m_ModelContextPtr)
334 if (m_ModelContextPtr.get() !=
nullptr)
339 isFastMathEnabled = modelOptions->IsFastMathEnabled();
343 return MakeWorkload<ClConvolution2dWorkload>(*convolution2dQueueDescriptor,
345 m_MemoryManager->GetIntraLayerManager(),
352 bool isFastMathEnabled =
false;
353 if (m_ModelContextPtr)
355 if (m_ModelContextPtr.get() !=
nullptr)
360 isFastMathEnabled = modelOptions->IsFastMathEnabled();
364 return MakeWorkload<ClConvolution3dWorkload>(*convolution3dQueueDescriptor,
366 m_MemoryManager->GetIntraLayerManager(),
373 return MakeWorkload<NullWorkload, NullWorkload>(*debugQueueDescriptor,
info, m_CLCompileContext);
378 return MakeWorkload<ClDepthToSpaceWorkload>(*depthToSpaceQueueDescriptor,
info, m_CLCompileContext);
382 auto depthwiseConvolution2dQueueDescriptor
384 return MakeWorkload<ClDepthwiseConvolutionWorkload>(*depthwiseConvolution2dQueueDescriptor,
391 return MakeWorkload<ClDequantizeWorkload>(*dequantizeQueueDescriptor,
info, m_CLCompileContext);
395 auto detectionPostProcessQueueDescriptor
397 return MakeWorkload<NullWorkload, NullWorkload>(*detectionPostProcessQueueDescriptor,
404 return std::make_unique<ClDivisionWorkload>(*divisionQueueDescriptor,
info, m_CLCompileContext);
408 auto elementwiseBinaryQueueDescriptor
410 switch (elementwiseBinaryQueueDescriptor->m_Parameters.m_Operation)
418 elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
419 return std::make_unique<ClAdditionWorkload>(additionQueueDescriptor,
info, m_CLCompileContext);
427 elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
428 return std::make_unique<ClDivisionWorkload>(divisionQueueDescriptor,
info, m_CLCompileContext);
436 elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
437 return std::make_unique<ClFloorDivWorkload>(divisionQueueDescriptor,
info, m_CLCompileContext);
445 elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
446 return std::make_unique<ClMaximumWorkload>(maximumQueueDescriptor,
info, m_CLCompileContext);
454 elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
455 return std::make_unique<ClMinimumWorkload>(minimumQueueDescriptor,
info, m_CLCompileContext);
463 elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
464 return std::make_unique<ClMultiplicationWorkload>(multiplicationQueueDescriptor,
471 return std::make_unique<ClElementwiseBinaryWorkload>(*elementwiseBinaryQueueDescriptor,
481 elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
482 return std::make_unique<ClSubtractionWorkload>(subtractionQueueDescriptor,
492 auto elementwiseUnaryQueueDescriptor
494 switch(elementwiseUnaryQueueDescriptor->m_Parameters.m_Operation)
499 absQueueDescriptor.
m_Inputs = elementwiseUnaryQueueDescriptor->m_Inputs;
500 absQueueDescriptor.
m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs;
501 return std::make_unique<ClAbsWorkload>(absQueueDescriptor,
info, m_CLCompileContext);
504 return std::make_unique<ClExpWorkload>(*elementwiseUnaryQueueDescriptor,
info, m_CLCompileContext);
506 return std::make_unique<ClLogWorkload>(*elementwiseUnaryQueueDescriptor,
info, m_CLCompileContext);
508 return std::make_unique<ClLogicalNotWorkload>(*elementwiseUnaryQueueDescriptor,
512 return std::make_unique<ClNegWorkload>(*elementwiseUnaryQueueDescriptor,
info, m_CLCompileContext);
516 rsqrtQueueDescriptor.
m_Inputs = elementwiseUnaryQueueDescriptor->m_Inputs;
517 rsqrtQueueDescriptor.
m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs;
518 return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor,
info, m_CLCompileContext);
521 return std::make_unique<ClSinWorkload>(*elementwiseUnaryQueueDescriptor,
info, m_CLCompileContext);
523 return std::make_unique<ClSqrtWorkload>(*elementwiseUnaryQueueDescriptor,
info, m_CLCompileContext);
531 return std::make_unique<ClFillWorkload>(*fillQueueDescriptor,
info, m_CLCompileContext);
536 return MakeWorkload<ClFloorFloatWorkload, NullWorkload>(*floorQueueDescriptor,
info, m_CLCompileContext);
540 auto fullyConnectedQueueDescriptor
542 return MakeWorkload<ClFullyConnectedWorkload>(*fullyConnectedQueueDescriptor,
544 m_MemoryManager->GetIntraLayerManager(),
550 return MakeWorkload<ClGatherWorkload>(*gatherQueueDescriptor,
info, m_CLCompileContext);
555 return MakeWorkload<ClGatherNdWorkload>(*gatherNdQueueDescriptor,
info, m_CLCompileContext);
560 return std::make_unique<CopyMemGenericWorkload>(*inputQueueDescriptor,
info);
564 auto instanceNormalizationQueueDescriptor
566 return MakeWorkload<ClInstanceNormalizationWorkload>(*instanceNormalizationQueueDescriptor,
572 auto l2NormalizationQueueDescriptor
574 return MakeWorkload<ClL2NormalizationFloatWorkload, NullWorkload>(*l2NormalizationQueueDescriptor,
581 switch(logicalBinaryQueueDescriptor->m_Parameters.m_Operation)
584 return std::make_unique<ClLogicalAndWorkload>(*logicalBinaryQueueDescriptor,
588 return std::make_unique<ClLogicalOrWorkload>(*logicalBinaryQueueDescriptor,
598 return MakeWorkload<ClLogSoftmaxWorkload>(*logSoftmaxQueueDescriptor,
600 m_MemoryManager->GetIntraLayerManager(),
606 return MakeWorkload<ClLstmFloatWorkload, NullWorkload>(*lstmQueueDescriptor,
info, m_CLCompileContext);
611 return MakeWorkload<ClMaximumWorkload>(*maximumQueueDescriptor,
info, m_CLCompileContext);
616 return MakeWorkload<ClMeanWorkload>(*meanQueueDescriptor,
info, m_CLCompileContext);
621 if (memCopyQueueDescriptor->m_Inputs.empty() || !memCopyQueueDescriptor->m_Inputs[0])
625 return MakeWorkload<CopyMemGenericWorkload>(*memCopyQueueDescriptor,
info);
630 if (memImportQueueDescriptor->m_Inputs.empty() || !memImportQueueDescriptor->m_Inputs[0])
634 return std::make_unique<ImportMemGenericWorkload>(*memImportQueueDescriptor,
info);
639 return MakeWorkload<ClMinimumWorkload>(*minimumQueueDescriptor,
info, m_CLCompileContext);
644 return MakeWorkload<ClMultiplicationWorkload>(*multiplicationQueueDescriptor,
info, m_CLCompileContext);
649 return MakeWorkload<ClNormalizationFloatWorkload, NullWorkload>(*normalizationQueueDescriptor,
656 return std::make_unique<CopyMemGenericWorkload>(*outputQueueDescriptor,
info);
661 return MakeWorkload<ClPadWorkload>(*padQueueDescriptor,
info, m_CLCompileContext);
666 return MakeWorkload<ClPermuteWorkload>(*permuteQueueDescriptor,
info, m_CLCompileContext);
671 return MakeWorkload<ClPooling2dWorkload>(*pooling2dQueueDescriptor,
info, m_CLCompileContext);
676 return MakeWorkload<ClPooling3dWorkload>(*pooling3dQueueDescriptor,
info, m_CLCompileContext);
681 return MakeWorkload<NullWorkload, NullWorkload>(*preCompiledQueueDescriptor,
info, m_CLCompileContext);
686 return MakeWorkload<ClPreluWorkload>(*preluQueueDescriptor,
info, m_CLCompileContext);
691 return std::make_unique<ClQLstmWorkload>(*qLstmQueueDescriptor,
info, m_CLCompileContext);
696 return MakeWorkload<ClQuantizeWorkload>(*quantizeQueueDescriptor,
info, m_CLCompileContext);
701 return MakeWorkload<ClQuantizedLstmWorkload>(*quantizedLstmQueueDescriptor,
info, m_CLCompileContext);
706 return std::make_unique<ClRankWorkload>(*rankQueueDescriptor,
info);
711 return std::make_unique<ClReduceWorkload>(*reduceQueueDescriptor,
info);
716 return MakeWorkload<ClReshapeWorkload>(*reshapeQueueDescriptor,
info, m_CLCompileContext);
721 return MakeWorkload<ClResizeWorkload>(*resizeQueueDescriptor,
info, m_CLCompileContext);
726 return MakeWorkload<ClReverseV2Workload>(*reverseV2QueueDescriptor,
info, m_CLCompileContext);
731 return MakeWorkload<ClScatterNdWorkload>(*scatterNdQueueDescriptor,
info, m_CLCompileContext);
736 return MakeWorkload<ClSliceWorkload>(*sliceQueueDescriptor,
info, m_CLCompileContext);
741 return std::make_unique<ClSoftmaxWorkload>(*softmaxQueueDescriptor,
743 m_MemoryManager->GetIntraLayerManager(),
748 auto spaceToBatchNdQueueDescriptor
750 return MakeWorkload<ClSpaceToBatchNdWorkload>(*spaceToBatchNdQueueDescriptor,
info, m_CLCompileContext);
755 return MakeWorkload<ClSpaceToDepthWorkload>(*spaceToDepthQueueDescriptor,
info, m_CLCompileContext);
760 return MakeWorkload<ClSplitterWorkload>(*splitterQueueDescriptor,
info, m_CLCompileContext);
765 return MakeWorkload<ClStackWorkload>(*stackQueueDescriptor,
info, m_CLCompileContext);
770 return MakeWorkload<ClStridedSliceWorkload>(*stridedSliceQueueDescriptor,
info, m_CLCompileContext);
775 return MakeWorkload<ClSubtractionWorkload>(*subtractionQueueDescriptor,
info, m_CLCompileContext);
780 return MakeWorkload<ClTileWorkload>(*tileQueueDescriptor,
info, m_CLCompileContext);
785 return MakeWorkload<ClTransposeWorkload>(*transposeQueueDescriptor,
info, m_CLCompileContext);
789 auto transposeConvolution2dQueueDescriptor
791 return MakeWorkload<ClTransposeConvolution2dWorkload>(*transposeConvolution2dQueueDescriptor,
793 m_MemoryManager->GetIntraLayerManager(),
799 return MakeWorkloadHelper<ClUnidirectionalSequenceLstmFloatWorkload, NullWorkload>(*desc,