1 #include "../../../include/common/monolish_dense.hpp"
2 #include "../../../include/common/monolish_logger.hpp"
3 #include "../../../include/common/monolish_matrix.hpp"
4 #include "../../../include/common/monolish_vector.hpp"
5 #include "../../../include/monolish_blas.hpp"
6 #include "../../internal/monolish_internal.hpp"
25 gpu_status = coo.get_device_mem_stat();
27 set_matvec([&](
const vector<T> &VEC) {
29 vector<T> vec(crs.get_row(), 0);
34 set_matmul_dense([&](
const Dense<T> &MAT) {
36 Dense<T> mat(crs.get_row(), MAT.get_col(), 0.0);
40 rmatmul_dense =
nullptr;
57 gpu_status = crs.get_device_mem_stat();
59 set_matvec([&](
const vector<T> &VEC) {
60 vector<T> vec(crs.get_row(), 0);
68 set_matmul_dense([&](
const Dense<T> &MAT) {
69 Dense<T> mat(crs.get_row(), MAT.get_col(), 0.0);
76 rmatmul_dense =
nullptr;
90 rowN = dense.get_row();
91 colN = dense.get_col();
93 gpu_status = dense.get_device_mem_stat();
95 set_matvec([&](
const vector<T> &VEC) {
96 vector<T> vec(dense.get_row(), 0);
104 set_matmul_dense([&](
const Dense<T> &MAT) {
105 Dense<T> mat(dense.get_row(), MAT.get_col(), 0.0);
112 rmatmul_dense =
nullptr;
120 template <
typename T>
122 if (!get_matvec_init_flag()) {
128 std::vector<T> values(rowN * colN);
129 for (
size_t i = 0; i < colN; ++i) {
130 std::vector<T> vec_tmp(colN, 0);
141 for (
size_t j = 0; j < rowN; ++j) {
142 values[j * colN + i] = ans[j];
146 dense =
Dense<T>(rowN, colN, values);