mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-24 19:43:35 +00:00
Fix Reduced Op build with empty FP16 kernel function tables (#21038)
### Description - Fixes compilation error for "reduced operator" builds with no FP16 kernels and `MLAS_F16VEC_INTRINSICS_SUPPORTED` enabled. - Fixes linker error for "reduced operator" builds with QNN EP by excluding QNN EP unit tests. QNN EP unit tests require CPU EP operator implementations to evaluate accuracy. ### Motivation and Context Need to be able to build a reduced operator build with QNN EP. See https://github.com/microsoft/onnxruntime/blob/main/docs/Reduced_Operator_Kernel_build.md The following example operator config file causes a compilation error when either `MLAS_F16VEC_INTRINSICS_SUPPORTED` is defined or QNN EP is enabled. ``` # reduced_op_config.txt ai.onnx;12;Add ``` ```shell python tools\ci_build\build.py --include_ops_by_config reduced_op_config.txt --config Debug --build_wheel --build_shared_lib --skip_tests --build_dir build --parallel --use_qnn --qnn_home '<QNN_ROOT_DIR>' ```
This commit is contained in:
parent
f4b22f89bc
commit
8f0e896c95
3 changed files with 5 additions and 1 deletions
|
|
@ -654,7 +654,9 @@ if(onnxruntime_USE_JSEP)
|
|||
list(APPEND onnxruntime_test_providers_libs onnxruntime_providers_js)
|
||||
endif()
|
||||
|
||||
if(onnxruntime_USE_QNN)
|
||||
# QNN EP tests require CPU EP op implementations for accuracy evaluation, so disable on minimal
|
||||
# or reduced op builds.
|
||||
if(onnxruntime_USE_QNN AND NOT onnxruntime_MINIMAL_BUILD AND NOT onnxruntime_REDUCED_OPS_BUILD)
|
||||
list(APPEND onnxruntime_test_framework_src_patterns ${TEST_SRC_DIR}/providers/qnn/*)
|
||||
list(APPEND onnxruntime_test_framework_libs onnxruntime_providers_qnn)
|
||||
list(APPEND onnxruntime_test_providers_dependencies onnxruntime_providers_qnn)
|
||||
|
|
|
|||
|
|
@ -178,6 +178,7 @@ Status RegisterNchwcKernels(KernelRegistry& kernel_registry) {
|
|||
#ifdef MLAS_F16VEC_INTRINSICS_SUPPORTED
|
||||
Status RegisterFp16Kernels(KernelRegistry& kernel_registry) {
|
||||
static const BuildKernelCreateInfoFn function_table[] = {
|
||||
BuildKernelCreateInfo<void>, // default entry to avoid the list become empty after ops-reducing
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kMSDomain, 1, MLFloat16, FusedConv)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kMSDomain, 1, MLFloat16, NhwcFusedConv)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kMSInternalNHWCDomain, 12, MLFloat16, MaxPool)>,
|
||||
|
|
|
|||
|
|
@ -2711,6 +2711,7 @@ Status RegisterOnnxOperatorKernels(KernelRegistry& kernel_registry) {
|
|||
#ifdef MLAS_F16VEC_INTRINSICS_SUPPORTED
|
||||
Status RegisterFp16Kernels(KernelRegistry& kernel_registry) {
|
||||
static const BuildKernelCreateInfoFn function_table[] = {
|
||||
BuildKernelCreateInfo<void>, // default entry to avoid the list become empty after ops-reducing
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 1, MLFloat16,
|
||||
GlobalAveragePool)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, MLFloat16,
|
||||
|
|
|
|||
Loading…
Reference in a new issue