5959#include < aclnnop/aclnn_div.h>
6060#include < aclnnop/aclnn_convolution.h>
6161#include < aclnnop/aclnn_elu.h>
62+ #include < aclnnop/aclnn_log.h>
63+ #include < aclnnop/aclnn_mean.h>
64+ #include < aclnnop/aclnn_reflection_pad1d.h>
65+ #include < aclnnop/aclnn_eq_tensor.h>
66+ #include < aclnnop/aclnn_gt_scalar.h>
6267#include < float.h>
6368
6469#include < cmath>
@@ -2598,6 +2603,7 @@ void ggml_cann_rope(ggml_backend_cann_context& ctx, ggml_tensor* dst) {
25982603 aclTensor* acl_dst = ggml_cann_create_tensor (dst, dst->ne , dst->nb , 3 );
25992604
26002605 GGML_CANN_CALL_ACLNN_OP (ArgMax, acl_src, 3 , false , acl_dst);
2606+
26012607 ACL_CHECK (aclDestroyTensor (acl_src));
26022608 ACL_CHECK (aclDestroyTensor (acl_dst));
26032609}
@@ -2629,6 +2635,9 @@ void ggml_cann_conv_transpose_1d(ggml_backend_cann_context& ctx, ggml_tensor* ds
26292635
26302636 ACL_CHECK (aclDestroyTensor (acl_weight));
26312637 ACL_CHECK (aclDestroyTensor (acl_dst));
2638+ ACL_CHECK (aclDestroyIntArray (stride));
2639+ ACL_CHECK (aclDestroyIntArray (padding));
2640+ ACL_CHECK (aclDestroyIntArray (dilation));
26322641}
26332642
26342643void ggml_cann_elu (ggml_backend_cann_context& ctx, ggml_tensor* dst){
@@ -2646,4 +2655,79 @@ void ggml_cann_elu(ggml_backend_cann_context& ctx, ggml_tensor* dst){
26462655
26472656 ACL_CHECK (aclDestroyTensor (acl_input));
26482657 ACL_CHECK (aclDestroyTensor (acl_dst));
2658+ ACL_CHECK (aclDestroyScalar (alpha));
2659+ }
2660+
2661+ void ggml_cann_mean (ggml_backend_cann_context& ctx, ggml_tensor* dst){
2662+ ggml_tensor * src0 = dst->src [0 ];
2663+
2664+ aclTensor* acl_src = ggml_cann_create_tensor (src0);
2665+ aclTensor* acl_dst = ggml_cann_create_tensor (dst);
2666+
2667+ int64_t reduceDimValue[] = {3 };
2668+ aclIntArray* reduceDim = aclCreateIntArray (reduceDimValue, 1 );
2669+ bool keepDim = true ;
2670+
2671+ GGML_CANN_CALL_ACLNN_OP (Mean, acl_src, reduceDim, keepDim, ACL_FLOAT, acl_dst);
2672+
2673+ ACL_CHECK (aclDestroyTensor (acl_src));
2674+ ACL_CHECK (aclDestroyTensor (acl_dst));
2675+ ACL_CHECK (aclDestroyIntArray (reduceDim));
2676+ }
2677+
2678+ void ggml_cann_pad_reflect_1d (ggml_backend_cann_context& ctx, ggml_tensor* dst){
2679+ ggml_tensor * src0 = dst->src [0 ];
2680+ int32_t *opts = (int32_t *) dst->op_params ;
2681+ int64_t paddingsArray[2 ] = {opts[0 ], opts[1 ]};
2682+ aclIntArray* paddings = aclCreateIntArray (paddingsArray, 2 );
2683+
2684+ for (int64_t i = 0 ; i < src0->ne [3 ]; i++) {
2685+ aclTensor* acl_src = ggml_cann_create_tensor (
2686+ (char *)src0->data + i * src0->ne [3 ],
2687+ ggml_cann_type_mapping (src0->type ), ggml_element_size (src0),
2688+ src0->ne , src0->nb , 3 );
2689+
2690+ aclTensor* acl_dst = ggml_cann_create_tensor (
2691+ (char *)dst->data + i * src0->ne [3 ],
2692+ ggml_cann_type_mapping (dst->type ), ggml_element_size (dst),
2693+ dst->ne , dst->nb , 3 );
2694+
2695+ GGML_CANN_CALL_ACLNN_OP (ReflectionPad1d, acl_src, paddings, acl_dst);
2696+
2697+ ACL_CHECK (aclDestroyTensor (acl_src));
2698+ ACL_CHECK (aclDestroyTensor (acl_dst));
2699+ }
2700+ ACL_CHECK (aclDestroyIntArray (paddings));
2701+ }
2702+
2703+ void ggml_cann_count_equal (ggml_backend_cann_context& ctx, ggml_tensor* dst){
2704+ ggml_tensor * src0 = dst->src [0 ];
2705+ ggml_tensor * src1 = dst->src [1 ];
2706+
2707+ aclTensor* acl_self = ggml_cann_create_tensor (src0);
2708+ aclTensor* acl_other = ggml_cann_create_tensor (src1);
2709+
2710+ GGML_CANN_CALL_ACLNN_OP (InplaceEqTensor, acl_self, acl_other);
2711+
2712+ ggml_cann_sum (ctx, dst);
2713+
2714+ ACL_CHECK (aclDestroyTensor (acl_self));
2715+ ACL_CHECK (aclDestroyTensor (acl_other));
2716+ }
2717+
2718+ void ggml_cann_step (ggml_backend_cann_context& ctx, ggml_tensor* dst){
2719+ ggml_tensor * src0 = dst->src [0 ];
2720+
2721+ aclTensor* acl_src = ggml_cann_create_tensor (src0);
2722+ aclTensor* acl_dst = ggml_cann_create_tensor (dst);
2723+
2724+ float alphaValue = 0 .0f ;
2725+ aclScalar* alpha = nullptr ;
2726+ alpha = aclCreateScalar (&alphaValue, aclDataType::ACL_FLOAT);
2727+
2728+ GGML_CANN_CALL_ACLNN_OP (GtScalar, acl_src, alpha, acl_dst);
2729+
2730+ ACL_CHECK (aclDestroyTensor (acl_src));
2731+ ACL_CHECK (aclDestroyTensor (acl_dst));
2732+ ACL_CHECK (aclDestroyScalar (alpha));
26492733}
0 commit comments