sgemv.cpp (536B)
1 #include <cstdlib> 2 3 void sgemv_noaliasing(const float *A, 4 const float *x, 5 float *__restrict__ y, 6 const size_t n) 7 { 8 for (size_t j = 0; j < n; ++j) { 9 for (size_t i = 0; i < n; ++i) { 10 y[j] += A[j * n + i] * x[i]; 11 } 12 } 13 } 14 15 void sgemv_aliasing(const float *A, const float *x, float *y, const size_t n) 16 { 17 for (size_t j = 0; j < n; ++j) { 18 for (size_t i = 0; i < n; ++i) { 19 y[j] += A[j * n + i] * x[i]; 20 } 21 } 22 }