@@ -654,6 +654,7 @@ static constexpr const qnn_op_caps ggmlqnn_k_op_caps[] = {
654654        {false , GGML_OP_CONV_TRANSPOSE_1D, 0 , nullptr },
655655        {false , GGML_OP_IM2COL, 0 , nullptr },
656656        {false , GGML_OP_IM2COL_BACK, 0 , nullptr },
657+         {false , GGML_OP_CONV_2D_DW, 0 , nullptr },
657658        {false , GGML_OP_CONV_TRANSPOSE_2D, 0 , nullptr },
658659        {false , GGML_OP_POOL_1D, 0 , nullptr },
659660        {false , GGML_OP_POOL_2D, 0 , nullptr },
@@ -760,6 +761,7 @@ static constexpr const hexagon_op_caps ggmlhexagon_k_op_caps[] = {
760761        {false , GGML_OP_CONV_TRANSPOSE_1D, 0 , nullptr , nullptr },
761762        {false , GGML_OP_IM2COL, 0 , nullptr , nullptr },
762763        {false , GGML_OP_IM2COL_BACK, 0 , nullptr , nullptr },
764+         {false , GGML_OP_CONV_2D_DW, 0 , nullptr , nullptr },
763765        {false , GGML_OP_CONV_TRANSPOSE_2D, 0 , nullptr , nullptr },
764766        {false , GGML_OP_POOL_1D, 0 , nullptr , nullptr },
765767        {true , GGML_OP_POOL_2D, 1 , " ggmlop_dsp_pool2d"  , ggmlop_dsp_pool2d},
@@ -5574,13 +5576,21 @@ static bool ggmlhexagon_can_handle_op_through_cdsp(ggml_backend_dev_t dev, const
55745576    const  ggml_tensor * src0 = op_tensor->src [0 ];
55755577    const  ggml_tensor * src1 = op_tensor->src [1 ];
55765578    const  int  src0_rank      = ggml_n_dims (src0);
5579+     const  int64_t  ne00       = src0->ne [0 ];
55775580    int  src1_rank            = 0 ;
55785581    if  (nullptr  != src1) {
55795582        src1_rank = ggml_n_dims (src1);
55805583    }
55815584    switch  (op_tensor->op ) {
55825585        case  GGML_OP_ADD:
55835586        {
5587+             // TODO:workaround approach to fix HWACCEL_CDSP can't works in ASR inference and  LLM inference
5588+             //      with some LLM models in a standard Android APP
5589+             //      one more thing, I think the latest QNN SDK's internal also use the similar approach
5590+             if  (ne00 < 1024 ) {
5591+                 return  false ;
5592+             }
5593+ 
55845594            if  (!ggml_are_same_shape (src0, src1)) {
55855595                return  false ;
55865596            }
0 commit comments