@@ -430,12 +430,23 @@ static void RunReduceOpQDQTest(const std::string& op_type,
430430// ReduceSum
431431//
432432
433+ // Broken on v79 and v81 devices:
434+ // Inaccuracy detected for output 'output_0', element 0
435+ // output_range=2.785210132598877, tolerance=0.40000000596046448%.
436+ // Expected val (f32@CPU_EP): -2.785210132598877
437+ // qdq@QNN_EP val: -2.6541414260864258 (err: 0.13106870651245117, err/output_range: 4.7058820724487305%)
438+ // qdq@CPU_EP val: -2.7415206432342529 (err: 0.043689489364624023, err/output_range: 1.5686246156692505%)
439+ // abs(qdq@QNN_EP - qdq@CPU_EP) / output_range = 3.1372575759887695%
433440// Test creates a Q -> DQ -> ReduceSum -> Q -> DQ graph, and checks that all
434441// nodes are supported by the QNN EP, and that the inference results match the CPU EP results.
435442//
436443// - Uses uint8 as the quantization type.
437444// - Uses opset 13, which has "axes" as an input.
445+ #if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
446+ TEST_F (QnnHTPBackendTests, DISABLED_ReduceSumU8Opset13) {
447+ #else
438448TEST_F (QnnHTPBackendTests, ReduceSumU8Opset13) {
449+ #endif
439450 RunReduceOpQDQTest<uint8_t >(" ReduceSum" ,
440451 TestInputDef<float >({2 , 2 }, false , {-10 .0f , 3 .21289f , -5 .9981f , 10 .0f }),
441452 {0 , 1 }, // axes
@@ -454,12 +465,23 @@ TEST_F(QnnHTPBackendTests, ReduceSumU8Opset13_LastAxis) {
454465 13 , // opset
455466 ExpectedEPNodeAssignment::All);
456467}
468+ // Broken on v79 and v81 devices:
469+ // Inaccuracy detected for output 'output_0', element 0
470+ // output_range=2.785210132598877, tolerance=0.40000000596046448%.
471+ // Expected val (f32@CPU_EP): -2.785210132598877
472+ // qdq@QNN_EP val: -2.6541414260864258 (err: 0.13106870651245117, err/output_range: 4.7058820724487305%)
473+ // qdq@CPU_EP val: -2.7415206432342529 (err: 0.043689489364624023, err/output_range: 1.5686246156692505%)
474+ // abs(qdq@QNN_EP - qdq@CPU_EP) / output_range = 3.1372575759887695%
457475// Test creates a Q -> DQ -> ReduceSum -> Q -> DQ graph, and checks that all
458476// nodes are supported by the QNN EP, and that the inference results match the CPU EP results.
459477//
460478// - Uses uint8 as the quantization type.
461479// - Uses opset 11, which has "axes" as an attribute.
480+ #if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
481+ TEST_F (QnnHTPBackendTests, DISABLED_ReduceSumU8Opset11) {
482+ #else
462483TEST_F (QnnHTPBackendTests, ReduceSumU8Opset11) {
484+ #endif
463485 RunReduceOpQDQTest<uint8_t >(" ReduceSum" ,
464486 TestInputDef<float >({2 , 2 }, false , {-10 .0f , 3 .21289f , -5 .9981f , 10 .0f }),
465487 {0 , 1 }, // axes
@@ -628,12 +650,23 @@ TEST_F(QnnHTPBackendTests, ReduceMinS8Opset18) {
628650// ReduceMean
629651//
630652
653+ // Broken on v79 and v81 devices:
654+ // Inaccuracy detected for output 'output_0', element 0
655+ // output_range=0.69630253314971924, tolerance=0.40000000596046448%.
656+ // Expected val (f32@CPU_EP): -0.69630253314971924
657+ // qdq@QNN_EP val: -0.66353535652160645 (err: 0.032767176628112793, err/output_range: 4.7058820724487305%)
658+ // qdq@CPU_EP val: -0.68538016080856323 (err: 0.010922372341156006, err/output_range: 1.5686246156692505%)
659+ // abs(qdq@QNN_EP - qdq@CPU_EP) / output_range = 3.1372575759887695%
631660// Test creates a Q -> DQ -> ReduceMean -> Q -> DQ graph, and checks that all
632661// nodes are supported by the QNN EP, and that the inference results match the CPU EP results.
633662//
634663// - Uses uint8 as the quantization type.
635664// - Uses opset 18, which has "axes" as an input.
665+ #if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
666+ TEST_F (QnnHTPBackendTests, DISABLED_ReduceMeanU8Opset18) {
667+ #else
636668TEST_F (QnnHTPBackendTests, ReduceMeanU8Opset18) {
669+ #endif
637670 RunReduceOpQDQTest<uint8_t >(" ReduceMean" ,
638671 TestInputDef<float >({2 , 2 }, false , {-10 .0f , 3 .21289f , -5 .9981f , 10 .0f }),
639672 {0 , 1 }, // axes
@@ -653,12 +686,23 @@ TEST_F(QnnHTPBackendTests, ReduceMeanU8Opset18_LastAxis) {
653686 ExpectedEPNodeAssignment::All);
654687}
655688
689+ // Broken on v79 and v81 devices:
690+ // Inaccuracy detected for output 'output_0', element 0
691+ // output_range=0.69630253314971924, tolerance=0.40000000596046448%.
692+ // Expected val (f32@CPU_EP): -0.69630253314971924
693+ // qdq@QNN_EP val: -0.66353535652160645 (err: 0.032767176628112793, err/output_range: 4.7058820724487305%)
694+ // qdq@CPU_EP val: -0.68538016080856323 (err: 0.010922372341156006, err/output_range: 1.5686246156692505%)
695+ // abs(qdq@QNN_EP - qdq@CPU_EP) / output_range = 3.1372575759887695%
656696// Test creates a Q -> DQ -> ReduceMean -> Q -> DQ graph, and checks that all
657697// nodes are supported by the QNN EP, and that the inference results match the CPU EP results.
658698//
659699// - Uses uint8 as the quantization type.
660700// - Uses opset 13, which has "axes" as an attribute.
701+ #if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
702+ TEST_F (QnnHTPBackendTests, DISABLED_ReduceMeanU8Opset13) {
703+ #else
661704TEST_F (QnnHTPBackendTests, ReduceMeanU8Opset13) {
705+ #endif
662706 RunReduceOpQDQTest<uint8_t >(" ReduceMean" ,
663707 TestInputDef<float >({2 , 2 }, false , {-10 .0f , 3 .21289f , -5 .9981f , 10 .0f }),
664708 {0 , 1 }, // axes
0 commit comments