Skip to content

Commit de7cc4b

Browse files
all scaling operations use blas scal
1 parent 328d4bc commit de7cc4b

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

include/htool/hmatrix/linalg/add_hmatrix_matrix_product_row_major.hpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ void sequential_internal_add_hmatrix_matrix_product_row_major(char transa, char
8686

8787
int incx(1), incy(1);
8888
if (CoefficientPrecision(beta) != CoefficientPrecision(1)) {
89-
// TODO: use blas
90-
std::transform(C, C + out_size, C, [&beta](CoefficientPrecision &c) { return c * beta; });
89+
Blas<CoefficientPrecision>::scal(&out_size, &beta, C, &incx);
9190
}
9291

9392
// Contribution champ lointain
@@ -141,8 +140,7 @@ void openmp_internal_add_hmatrix_matrix_product_row_major(char transa, char tran
141140

142141
int incx(1), incy(1);
143142
if (CoefficientPrecision(beta) != CoefficientPrecision(1)) {
144-
// TODO: use blas
145-
std::transform(C, C + out_size, C, [&beta](CoefficientPrecision &c) { return c * beta; });
143+
Blas<CoefficientPrecision>::scal(&out_size, &beta, C, &incx);
146144
}
147145

148146
// Contribution champ lointain

include/htool/hmatrix/linalg/add_hmatrix_vector_product.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ void sequential_internal_add_hmatrix_vector_product(char trans, CoefficientPreci
8181
}
8282

8383
if (CoefficientPrecision(beta) != CoefficientPrecision(1)) {
84-
std::transform(out, out + out_size, out, [&beta](CoefficientPrecision &c) { return c * beta; });
84+
int incx = 1;
85+
Blas<CoefficientPrecision>::scal(&out_size, &beta, out, &incx);
8586
}
8687

8788
// Contribution champ lointain
@@ -131,8 +132,7 @@ void openmp_internal_add_hmatrix_vector_product(char trans, CoefficientPrecision
131132

132133
int incx(1), incy(1);
133134
if (CoefficientPrecision(beta) != CoefficientPrecision(1)) {
134-
// TODO: use blas
135-
std::transform(out, out + out_size, out, [&beta](CoefficientPrecision &c) { return c * beta; });
135+
Blas<CoefficientPrecision>::scal(&out_size, &beta, out, &incx);
136136
}
137137

138138
// Contribution champ lointain

include/htool/matrix/linalg/add_matrix_vector_product.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ void add_matrix_vector_product(char trans, T alpha, const Matrix<T> &A, const T
1616
int incx = 1;
1717
int incy = 1;
1818
Blas<T>::gemv(&trans, &nr, &nc, &alpha, A.data(), &lda, in, &incx, &beta, out, &incy);
19-
} else if (nr) {
20-
std::transform(out, out + nr, out, [&beta](T &c) { return c * beta; }); // LCOV_EXCL_LINE
19+
} else if (nr) { // LCOV_EXCL_LINE
20+
int incx = 1; // LCOV_EXCL_LINE
21+
Blas<T>::scal(&nr, &beta, out, &incx); // LCOV_EXCL_LINE
2122
}
2223
}
2324

0 commit comments

Comments
 (0)