Question: #include #include #define TILE _ SIZE 1 6 #define UNROLL _ FACTOR 8 void matrix _ multiplication ( int * A , int * B
#include
#include
#define TILESIZE
#define UNROLLFACTOR
void matrixmultiplicationint A int B int C int N
Initialize result matrix C to
for int i ; i N N; i
Ci;
Iterate over the tiles
for int i ; i N; i TILESIZE
for int j ; j N; j TILESIZE
for int k ; k N; k TILESIZE
Compute the block submatrix
for int ii i; ii i TILESIZE && ii N; ii
for int jj j; jj j TILESIZE && jj N; jj
int sum ;
int kk;
for kk k; kk k TILESIZE && kk UNROLLFACTOR N; kk UNROLLFACTOR
Prefetching next elements
builtinprefetch&Aii N kk UNROLLFACTOR;
builtinprefetch&Bkk UNROLLFACTOR N jj;
Loop unrolling
sum Aii N kk Bkk N jj;
sum Aii N kk Bkk N jj;
sum Aii N kk Bkk N jj;
sum Aii N kk Bkk N jj;
sum Aii N kk Bkk N jj;
sum Aii N kk Bkk N jj;
sum Aii N kk Bkk N jj;
sum Aii N kk Bkk N jj;
Handle the remaining elements
for ; kk k TILESIZE && kk N; kk
sum Aii N kk Bkk N jj;
Cii N jj sum;
can sopmebody modify this withoput changing its functionality
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
