-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
executable file
·91 lines (76 loc) · 1.59 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h>
#include <time.h>
#include <omp.h>
#define DIM 500
void fill_random_values(int a[DIM][DIM], int m)
{
int i, j;
srand((unsigned int)time(NULL));
for(i=0; i < m; i++)
for(j=0; j< m; j++)
a[i][j] = rand();
}
void view_matrice(int a[DIM][DIM], int m)
{
int i,j;
for(i=0; i < m; i++){
for(j=0; j< m; j++){
printf(" %08x", a[i][j]);
}
printf("\n");
}
printf("\n");
}
void mmultiply(int a[DIM][DIM],
int b[DIM][DIM],int c[DIM][DIM],int m,int n,int p)
{
int i,j,k,sum=0;
#pragma omp parallel for shared(c, m, p) private(i,j,k)
for (i=0;i<m;i++)
{
for (j=0;j<p;j++)
{
for (k=0;k<n;k++)
sum=sum+(a[i][k]*b[k][j]);
c[i][j]=sum;
sum=0;
}
}
return;
}
void mmultiply(int a[DIM][DIM],
int b[DIM][DIM],int c[DIM][DIM],int m,int n,int p)
{
int i,j,k,sum=0;
for (i=0;i<m;i++)
{
for (j=0;j<p;j++)
{
for (k=0;k<n;k++)
sum=sum+(a[i][k]*b[k][j]);
c[i][j]=sum;
sum=0;
}
}
return;
}
int main(int argc, char *argv[])
{
int a[DIM][DIM];
int b[DIM][DIM];
int c[DIM][DIM];
clock_t clock1, clock2;
printf("Program will multiply %d x %d matrices\n", DIM, DIM);
printf("Method : Standart\n");
fill_random_values(a, DIM);
//view_matrice(a, DIM);
fill_random_values(b, DIM);
//view_matrice(b, DIM);
printf("Random Matrices are ready\n");
clock1 = clock();
mmultiply(a,b,c,DIM,DIM,DIM);
clock2 = clock();
printf("Multiplication completed, duration = %d\n", clock2 - clock1);
//view_matrice(c, DIM);
return 0;
}