summaryrefslogtreecommitdiff
path: root/OASIS/c/src/ekd_blas.h
diff options
context:
space:
mode:
authorEric Dao <eric@erickhangdao.com>2023-05-12 14:09:07 -0400
committerEric Dao <eric@erickhangdao.com>2023-05-12 14:09:07 -0400
commit191e4bd8beae134295d481773823142d2fdc6a98 (patch)
treeaaca4e7f8e229f9bd551d9bb1583b8ecd7a59d4a /OASIS/c/src/ekd_blas.h
parent186daed7e179241377c117e9d208ccd301d4d712 (diff)
downloadura-master.tar.gz
ura-master.tar.bz2
ura-master.zip
refactored tool chain setup, able to debug and run from vscode nowHEADmaster
Diffstat (limited to 'OASIS/c/src/ekd_blas.h')
-rw-r--r--OASIS/c/src/ekd_blas.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/OASIS/c/src/ekd_blas.h b/OASIS/c/src/ekd_blas.h
new file mode 100644
index 0000000..4c9919d
--- /dev/null
+++ b/OASIS/c/src/ekd_blas.h
@@ -0,0 +1,49 @@
+#ifndef EKD_BLAS_H
+#define EKD_BLAS_H
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <omp.h>
+#include <cblas.h>
+
+typedef enum {
+ MM_ADD,
+ MM_SUBTRACT,
+ MM_MULTIPLY,
+ MM_MULTIPLY_OMP,
+ MM_MULTIPLY_GEMM
+} matrix_matrix_operation_e;
+
+typedef enum {
+ MV_MULTIPLY,
+ MV_MULTIPLY_GEMV
+} matrix_vector_operation_e;
+
+typedef enum {
+ SHIFT_ADD,
+ SHIFT_SUBTRACT
+} shift_matrix_operation_e;
+
+// Prototypes
+void print_matrix(float** matrix, uint32_t rows, uint32_t cols);
+void print_vector(float* vector, uint32_t size);
+void copy_matrix(float** input_matrix, float** resultant_matrix, uint32_t rows, uint32_t cols);
+void copy_vector(float* input_vector, float* resultant_vector, uint32_t size);
+void shift_matrix(float** input_matrix, uint32_t size, float trace, shift_matrix_operation_e operation);
+float trace_matrix(float** input_matrix, uint32_t size);
+void eye(float** input_matrix, uint32_t size);
+void outer_product(float* input_vector, uint32_t size, float** resultant_matrix); // outer_productes itself
+float inner_product(float* input_vector_1, float* input_vector_2, uint32_t size); // Dots itself
+void matrix_operation(float** input_matrix_A, uint32_t rows_A, uint32_t cols_A, float** input_matrix_B, uint32_t rows_B, uint32_t cols_B, float** resultant_matrix, matrix_matrix_operation_e operation);
+void transpose(float** input_matrix, uint32_t rows, uint32_t cols, float** transposed_matrix);
+uint8_t sign(float num);
+void vector_normalize(float* vector, uint32_t size);
+float vector_norm(float* vector, uint32_t size);
+float matrix_norm(float** input_matrix_A1, float** input_matrix_A, uint32_t rows, uint32_t cols);
+float cosine_similarity(float* curr_vector, float* new_vector, uint32_t size);
+void matrix_vector_multiply(float** input_matrix, uint32_t rows, uint32_t cols, float* input_vector, float* resultant_vector, matrix_vector_operation_e operation);
+
+#endif /* EKD_BLAS_H */