From 578a493b648a3340fb3f138526b273839ef4f021 Mon Sep 17 00:00:00 2001 From: p-w-rs Date: Fri, 23 Sep 2022 14:49:44 -0500 Subject: [PATCH] stuff --- 04-MatrixAddition (pthread)/a.out | Bin 49696 -> 0 bytes 04-MatrixAddition (pthread)/matsaddth.c | 100 ------------------------ 2 files changed, 100 deletions(-) delete mode 100755 04-MatrixAddition (pthread)/a.out delete mode 100644 04-MatrixAddition (pthread)/matsaddth.c diff --git a/04-MatrixAddition (pthread)/a.out b/04-MatrixAddition (pthread)/a.out deleted file mode 100755 index 03ccde91dc125ed5842cf433b9c6231e704128ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49696 zcmeI*OKenC7zgk(eZcStQxan^0-b1TDhnP8p-75T=+z5KL7|42;K_7m%1oS2n|Ww! zXlzm-OeT}CL|2V#4en%RrqWn&BN`W)uxL!hnFNw98q*j<{eS1&+s71K6Z1dGx%YhM z-22_{{?3%$)gS+U_-MUSfkvfN19}Vkxn`vB; zkBubHueea_v(CA*t1mJ4M^?`%FGeZK?{bCK`NVKuMz*cV*NKv-Mf+v#25$NmjLFW)+E!sgS-M0zNZ#aw;9b6&oq-t`jurJAWV z^~G}eY$|hMDgSD}&%JzGy>*FKwpF>YpmibhaVitnsZ9T%iC5?Q(#t1%E=}V49CpPX zWnZtOYu(*-wo4y7)pN$~Zp6ANoK34c%kNFP?3MiHw7xL7Vq2e>FNkYRi`e_UNQuAv zPW&cyRncu-{w&U8b#);&En-i8UH&_3osR0<$Uxse*r)Q{HI*FI+J^WRhAmHC$Mw4>#}&$o~FyybKs_y4vkb?=E-TG)FrahLA57f|_L z2`Wm-vx7Kq!`W})iv4#WiSubpN*Y0Mx$f1*U6_^Mo!_v3W0Gg$h(BY`^4tz|S(A5ejJM)d0?W0ao--r4d}3ht(cP#k z)rX7FUP71rH!IfjWiJ*lHVROH0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2E_TcFo1{^5>4*y|QY z7u;fD&Ml43x#a_&;#;j}YjXJ^c8S5v5b3=`&w<})%hTk@6f0wk9?l(KARPSQ2uYw{Y=Wi{xeHT$` zv2Ds6zcrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ@H7b|z5m~P);nMH&R4wiHShd1 z)y!HbKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=EseH-W7$s$O}gt&#XhI<9m1 zLZ9wSW#WmfdMB%{sT@{xe=I$iOGp%yXmBWzk)TC_Tr8UDmuMTJfoM8C7?UWBXegV? zky;yniEj&+9lFBsv z=MN -#include -#include - -// Value depend on System core -#define CORE 4 - -typedef struct matrix -{ - int r; - int c; - int *v; -} matrix; - -matrix A, B, R; - -void read_matrix(matrix *m, const char *filename) -{ - FILE *f = fopen(filename, "r"); - fscanf(f, "%d %d", &(m->r), &(m->c)); - m->v = malloc(sizeof(int) * m->r * m->c); - for (int i = 0; i < m->r; i++) - { - for (int j = 0; j < m->c; j++) - { - int value; - fscanf(f, "%d", &value); - m->v[i * m->c + j] = value; - } - } - fclose(f); -} - -void print_matrix(const matrix *m) -{ - for (int i = 0; i < m->r; i++) - { - for (int j = 0; j < m->c; j++) - { - printf("%d ", m->v[i * m->c + j]); - } - printf("\n"); - } -} - -typedef struct thargs -{ - int start; - int end; -} thargs; - -// Addition of a Matrix -void *addition(void *arg) -{ - thargs *x = (thargs *)arg; - // Each thread computes 1/4th of matrix addition - for (int i = x->start; i < x->end; i++) - { - R.v[i] = A.v[i] + B.v[i]; - } -} - -int main(int argc, char *argv[]) -{ - - read_matrix(&A, argv[1]); - read_matrix(&B, argv[2]); - if (A.r == B.r && A.c == B.c) - { - R.r = A.r; - R.c = A.c; - R.v = malloc(sizeof(int) * R.r * R.c); - } - printf("Matrix A\n"); - print_matrix(&A); - printf("\nMatrix B\n"); - print_matrix(&B); - - int comps_per_thread = (CORE * 2) / (A.r * A.c); - pthread_t thread[CORE * 2]; - thargs args[CORE * 2]; - for (int i = 0; i < CORE * 2; i++) - { - thargs args[i] = {i * comps_per_thread, ((i + 1) * comps_per_thread)}; - pthread_create(&thread[i], NULL, &addition, &args[i]); - } - - // Waiting for join threads after compute - for (i = 0; i < CORE * 2; i++) - { - - pthread_join(thread[i], NULL); - } - - // Display Addition of mat_A and mat_B - printf("\nSum of Matrix A and B:\n"); - print_matrix(&R); - - return 0; -} \ No newline at end of file