59
59
#include < aclnnop/aclnn_div.h>
60
60
#include < aclnnop/aclnn_convolution.h>
61
61
#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>
62
67
#include < float.h>
63
68
64
69
#include < cmath>
@@ -2598,6 +2603,7 @@ void ggml_cann_rope(ggml_backend_cann_context& ctx, ggml_tensor* dst) {
2598
2603
aclTensor* acl_dst = ggml_cann_create_tensor (dst, dst->ne , dst->nb , 3 );
2599
2604
2600
2605
GGML_CANN_CALL_ACLNN_OP (ArgMax, acl_src, 3 , false , acl_dst);
2606
+
2601
2607
ACL_CHECK (aclDestroyTensor (acl_src));
2602
2608
ACL_CHECK (aclDestroyTensor (acl_dst));
2603
2609
}
@@ -2629,6 +2635,9 @@ void ggml_cann_conv_transpose_1d(ggml_backend_cann_context& ctx, ggml_tensor* ds
2629
2635
2630
2636
ACL_CHECK (aclDestroyTensor (acl_weight));
2631
2637
ACL_CHECK (aclDestroyTensor (acl_dst));
2638
+ ACL_CHECK (aclDestroyIntArray (stride));
2639
+ ACL_CHECK (aclDestroyIntArray (padding));
2640
+ ACL_CHECK (aclDestroyIntArray (dilation));
2632
2641
}
2633
2642
2634
2643
void 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){
2646
2655
2647
2656
ACL_CHECK (aclDestroyTensor (acl_input));
2648
2657
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));
2649
2733
}
0 commit comments