44cdc9964efb168f01ebd7a2f4e67229bf1c9c2c
1 //**************************************************************************
2 // Double-precision general matrix multiplication benchmark
3 //--------------------------------------------------------------------------
7 //--------------------------------------------------------------------------
8 // Input/Reference Data
12 void spmv(int r
, const double* val
, const int* idx
, const double* x
,
13 const int* ptr
, double* y
)
15 for (int i
= 0; i
< r
; i
++)
18 double yi0
= 0, yi1
= 0, yi2
= 0, yi3
= 0;
19 for (k
= ptr
[i
]; k
< ptr
[i
+1]-3; k
+=4)
21 yi0
+= val
[k
+0]*x
[idx
[k
+0]];
22 yi1
+= val
[k
+1]*x
[idx
[k
+1]];
23 yi2
+= val
[k
+2]*x
[idx
[k
+2]];
24 yi3
+= val
[k
+3]*x
[idx
[k
+3]];
26 for ( ; k
< ptr
[i
+1]; k
++)
28 yi0
+= val
[k
]*x
[idx
[k
]];
30 y
[i
] = (yi0
+yi1
)+(yi2
+yi3
);
34 //--------------------------------------------------------------------------
37 int main( int argc
, char* argv
[] )
42 spmv(R
, val
, idx
, x
, ptr
, y
);
46 spmv(R
, val
, idx
, x
, ptr
, y
);
49 return verifyDouble(R
, y
, verify_data
);