From 0b61a33690dab71232393b4fc008fcb93656ab2f Mon Sep 17 00:00:00 2001 From: ptslgaequ <2728416244@qq.com> Date: Fri, 29 Nov 2024 22:54:24 +0800 Subject: [PATCH] ADD file via upload --- 步骤七-加法.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 步骤七-加法.cpp diff --git a/步骤七-加法.cpp b/步骤七-加法.cpp new file mode 100644 index 0000000..cd1e0b7 --- /dev/null +++ b/步骤七-加法.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +#define SIZE 1024 + + +void vector_add_optimized(float* A, float* B, float* C, int size) { + int i; + for (i = 0; i < size - 3; i += 4) { + + float32x4_t A_vec = vld1q_f32(A + i); + float32x4_t B_vec = vld1q_f32(B + i); + + float32x4_t C_vec = vaddq_f32(A_vec, B_vec); + + vst1q_f32(C + i, C_vec); + } + + for (; i < size; i++) { + C[i] = A[i] + B[i]; + } +} + +void vector_add(float* A, float* B, float* C, int size) { + for (int i = 0; i < size; i++) { + C[i] = A[i] + B[i]; + } +} + +int main() { + float A[SIZE], B[SIZE], C[SIZE]; + srand(time(NULL)); + + + for (int i = 0; i < SIZE; i++) { + A[i] = rand() % 100; + B[i] = rand() % 100; + } + + + clock_t start1, end1, start2, end2; + + start1 = clock(); + vector_add(A, B, C, SIZE); + end1 = clock(); + + start2 = clock(); + + vector_add_optimized(A, B, C, SIZE); + + end2 = clock(); + for (int i = 0; i < 9; i++) { + printf("A[%d] + B[%d] = %d\n", i, i, C[i]); + } + double time_spent1 = (double)(end1 - start1) / CLOCKS_PER_SEC; + + printf("»ù´¡ÏòÁ¿¼Ó·¨µÄÔËÐÐʱ¼äΪ: %e Ãë\n", time_spent1); + + double time_spent = (double)(end2 - start2) / CLOCKS_PER_SEC; + + printf("NEONÓÅ»¯ÏòÁ¿¼Ó·¨µÄÔËÐÐʱ¼äΪ: %e Ãë\n", time_spent); + + return 0; +}