PAPI  5.7.0.0
matrix_multiply.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

long long naive_matrix_multiply_estimated_flops (int quiet)
 
long long naive_matrix_multiply_estimated_loads (int quiet)
 
long long naive_matrix_multiply_estimated_stores (int quiet)
 
double naive_matrix_multiply (int quiet)
 

Function Documentation

◆ naive_matrix_multiply()

double naive_matrix_multiply ( int  quiet)

Definition at line 76 of file matrix_multiply.c.

76  {
77 
78  double s;
79  int i,j,k;
80 
81  for(i=0;i<MATRIX_SIZE;i++) {
82  for(j=0;j<MATRIX_SIZE;j++) {
83  a[i][j]=(double)i*(double)j;
84  b[i][j]=(double)i/(double)(j+5);
85  }
86  }
87 
88  for(j=0;j<MATRIX_SIZE;j++) {
89  for(i=0;i<MATRIX_SIZE;i++) {
90  s=0;
91  for(k=0;k<MATRIX_SIZE;k++) {
92  s+=a[i][k]*b[k][j];
93  }
94  c[i][j] = s;
95  }
96  }
97 
98  s=0.0;
99 
100  for(i=0;i<MATRIX_SIZE;i++) {
101  for(j=0;j<MATRIX_SIZE;j++) {
102  s+=c[i][j];
103  }
104  }
105 
106  if (!quiet) printf("Matrix multiply sum: s=%lf\n",s);
107 
108  return s;
109 }
static double a[MATRIX_SIZE][MATRIX_SIZE]
static double c[MATRIX_SIZE][MATRIX_SIZE]
int quiet
Definition: rapl_overflow.c:18
#define MATRIX_SIZE
double s
Definition: byte_profile.c:36
static double b[MATRIX_SIZE][MATRIX_SIZE]
int i
Definition: fileop.c:140

◆ naive_matrix_multiply_estimated_flops()

long long naive_matrix_multiply_estimated_flops ( int  quiet)

Definition at line 10 of file matrix_multiply.c.

10  {
11 
12  long long muls,divs,adds;
13 
14  /* setup */
18 
19  /* multiply */
22 
23  /* sum */
25 
26  if (!quiet) {
27  printf("Estimated flops: adds: %lld muls: %lld divs: %lld\n",
28  adds,muls,divs);
29  }
30 
31  return adds+muls+divs;
32 }
int quiet
Definition: rapl_overflow.c:18
#define MATRIX_SIZE

◆ naive_matrix_multiply_estimated_loads()

long long naive_matrix_multiply_estimated_loads ( int  quiet)

Definition at line 35 of file matrix_multiply.c.

35  {
36 
37  long long loads=0;
38 
39  /* setup */
40  loads+=0;
41 
42  /* multiply */
44 
45  /* sum */
46  loads+=MATRIX_SIZE*MATRIX_SIZE;
47 
48  if (!quiet) {
49  printf("Estimated loads: %lld\n",loads);
50  }
51 
52  return loads;
53 }
int quiet
Definition: rapl_overflow.c:18
#define MATRIX_SIZE

◆ naive_matrix_multiply_estimated_stores()

long long naive_matrix_multiply_estimated_stores ( int  quiet)

Definition at line 55 of file matrix_multiply.c.

55  {
56 
57  long long stores=0;
58 
59  /* setup */
60  stores+=MATRIX_SIZE*MATRIX_SIZE*2;
61 
62  /* multiply */
63  stores+=MATRIX_SIZE*MATRIX_SIZE;
64 
65  /* sum */
66  stores+=1;
67 
68  if (!quiet) {
69  printf("Estimated stores: %lld\n",stores);
70  }
71 
72  return stores;
73 }
int quiet
Definition: rapl_overflow.c:18
#define MATRIX_SIZE