1 #include "../../../include/monolish_blas.hpp"
2 #include "../../internal/monolish_internal.hpp"
14 const size_t N = get_col();
15 const size_t Len =
std::min(get_row(), get_col());
17 assert(Len == vec.size());
18 assert(get_device_mem_stat() == vec.get_device_mem_stat());
20 if (gpu_status ==
true) {
21 #if MONOLISH_USE_NVIDIA_GPU // gpu
22 const size_t M = get_row();
23 vector<T> vec_tmp(N, 0);
25 T *vec_tmpd = vec_tmp.data();
26 T *vec_ansd = vec_ans.data();
28 for (
size_t i = 0; i < Len; i++) {
34 vecd[i] = vec_ansd[i];
39 throw std::runtime_error(
"error USE_GPU is false, but gpu_status == true");
44 vector<T> vec_tmp(N, 0);
46 for (
size_t i = 0; i < Len; i++) {
48 vecd[i] =
matvec(vec_tmp)[i];
69 const size_t N = get_col();
70 const size_t Len =
std::min(get_row(), get_col());
72 assert(Len == vec.size());
73 assert(get_device_mem_stat() == vec.get_device_mem_stat());
75 if (gpu_status ==
true) {
76 #if MONOLISH_USE_NVIDIA_GPU // gp
77 const size_t M = get_row();
78 vector<T> vec_tmp(N, 0);
80 T *vec_tmpd = vec_tmp.data();
81 T *vec_ansd = vec_ans.data();
83 for (
size_t i = 0; i < Len; i++) {
89 vecd[i] = vec_ansd[i];
94 throw std::runtime_error(
"error USE_GPU is false, but gpu_status == true");
97 vector<T> vec_tmp(N, 0);
98 #pragma omp parallel for
99 for (
size_t i = 0; i < Len; i++) {
101 vecd[i] =
matvec(vec_tmp)[i];
110 view1D<vector<double>,
double> &vec)
const;
112 view1D<vector<float>,
float> &vec)
const;
114 template <
typename T>
119 T *vecd = vec.data();
121 const size_t N = get_col();
122 const size_t Len =
std::min(get_row(), get_col());
124 assert(Len == vec.size());
125 assert(get_device_mem_stat() == vec.get_device_mem_stat());
127 if (gpu_status ==
true) {
128 #if MONOLISH_USE_NVIDIA_GPU // gpu
129 const size_t M = get_row();
130 vector<T> vec_tmp(N, 0);
131 vector<T> vec_ans(M);
132 T *vec_tmpd = vec_tmp.data();
133 T *vec_ansd = vec_ans.data();
135 for (
size_t i = 0; i < Len; i++) {
138 vec_ans =
matvec(vec_tmp);
141 vecd[i] = vec_ansd[i];
146 throw std::runtime_error(
"error USE_GPU is false, but gpu_status == true");
149 vector<T> vec_tmp(N, 0);
150 #pragma omp parallel for
151 for (
size_t i = 0; i < Len; i++) {
153 vecd[i] =
matvec(vec_tmp)[i];
162 view1D<matrix::Dense<double>,
double> &vec)
const;
164 view1D<matrix::Dense<float>,
float> &vec)
const;