monolish  0.16.2
MONOlithic LInear equation Solvers for Highly-parallel architecture
monolish_matvec_blas.hpp
Go to the documentation of this file.
1 // this code is generated by gen_matvec_blas.sh
2 #pragma once
3 #include "../common/monolish_common.hpp"
4 
5 namespace monolish {
11 namespace blas {
12 
37  const view1D<vector<double>, double> &x,
40  const view1D<matrix::Dense<double>, double> &x,
45  const view1D<vector<float>, float> &x, matrix::Dense<float> &C);
47  const view1D<matrix::Dense<float>, float> &x,
69 void times_row(const matrix::Dense<double> &A, const size_t num,
71 void times_row(const matrix::Dense<double> &A, const size_t num,
72  const view1D<vector<double>, double> &x,
74 void times_row(const matrix::Dense<double> &A, const size_t num,
75  const view1D<matrix::Dense<double>, double> &x,
77 void times_row(const matrix::Dense<float> &A, const size_t num,
78  const vector<float> &x, matrix::Dense<float> &C);
79 void times_row(const matrix::Dense<float> &A, const size_t num,
80  const view1D<vector<float>, float> &x, matrix::Dense<float> &C);
81 void times_row(const matrix::Dense<float> &A, const size_t num,
82  const view1D<matrix::Dense<float>, float> &x,
107  const view1D<vector<double>, double> &x, matrix::CRS<double> &C);
109  const view1D<matrix::CRS<double>, double> &x,
112  matrix::CRS<float> &C);
114  const view1D<vector<float>, float> &x, matrix::CRS<float> &C);
116  const view1D<matrix::CRS<float>, float> &x,
117  matrix::CRS<float> &C);
140 void times_row(const matrix::CRS<double> &A, const size_t num,
141  const vector<double> &x, matrix::CRS<double> &C);
142 void times_row(const matrix::CRS<double> &A, const size_t num,
143  const view1D<vector<double>, double> &x, matrix::CRS<double> &C);
144 void times_row(const matrix::CRS<double> &A, const size_t num,
145  const view1D<matrix::CRS<double>, double> &x,
147 void times_row(const matrix::CRS<float> &A, const size_t num,
148  const vector<float> &x, matrix::CRS<float> &C);
149 void times_row(const matrix::CRS<float> &A, const size_t num,
150  const view1D<vector<float>, float> &x, matrix::CRS<float> &C);
151 void times_row(const matrix::CRS<float> &A, const size_t num,
152  const view1D<matrix::CRS<float>, float> &x,
153  matrix::CRS<float> &C);
175  const view1D<vector<double>, double> &x,
178  const view1D<matrix::Dense<double>, double> &x,
183  const view1D<vector<float>, float> &x, matrix::Dense<float> &C);
185  const view1D<matrix::Dense<float>, float> &x,
207 void times_col(const matrix::Dense<double> &A, const size_t num,
209 void times_col(const matrix::Dense<double> &A, const size_t num,
210  const view1D<vector<double>, double> &x,
212 void times_col(const matrix::Dense<double> &A, const size_t num,
213  const view1D<matrix::Dense<double>, double> &x,
215 void times_col(const matrix::Dense<float> &A, const size_t num,
216  const vector<float> &x, matrix::Dense<float> &C);
217 void times_col(const matrix::Dense<float> &A, const size_t num,
218  const view1D<vector<float>, float> &x, matrix::Dense<float> &C);
219 void times_col(const matrix::Dense<float> &A, const size_t num,
220  const view1D<matrix::Dense<float>, float> &x,
245  const view1D<vector<double>, double> &x, matrix::CRS<double> &C);
247  const view1D<matrix::CRS<double>, double> &x,
250  matrix::CRS<float> &C);
252  const view1D<vector<float>, float> &x, matrix::CRS<float> &C);
254  const view1D<matrix::CRS<float>, float> &x,
255  matrix::CRS<float> &C);
278 void times_col(const matrix::CRS<double> &A, const size_t num,
279  const vector<double> &x, matrix::CRS<double> &C);
280 void times_col(const matrix::CRS<double> &A, const size_t num,
281  const view1D<vector<double>, double> &x, matrix::CRS<double> &C);
282 void times_col(const matrix::CRS<double> &A, const size_t num,
283  const view1D<matrix::CRS<double>, double> &x,
285 void times_col(const matrix::CRS<float> &A, const size_t num,
286  const vector<float> &x, matrix::CRS<float> &C);
287 void times_col(const matrix::CRS<float> &A, const size_t num,
288  const view1D<vector<float>, float> &x, matrix::CRS<float> &C);
289 void times_col(const matrix::CRS<float> &A, const size_t num,
290  const view1D<matrix::CRS<float>, float> &x,
291  matrix::CRS<float> &C);
311  vector<double> &y);
313  view1D<vector<double>, double> &y);
315  view1D<matrix::Dense<double>, double> &y);
317  const view1D<vector<double>, double> &x, vector<double> &y);
319  const view1D<vector<double>, double> &x,
320  view1D<vector<double>, double> &y);
322  const view1D<vector<double>, double> &x,
323  view1D<matrix::Dense<double>, double> &y);
325  const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
327  const view1D<matrix::Dense<double>, double> &x,
328  view1D<vector<double>, double> &y);
330  const view1D<matrix::Dense<double>, double> &x,
331  view1D<matrix::Dense<double>, double> &y);
332 void matvec(const matrix::Dense<float> &A, const vector<float> &x,
333  vector<float> &y);
334 void matvec(const matrix::Dense<float> &A, const vector<float> &x,
335  view1D<vector<float>, float> &y);
336 void matvec(const matrix::Dense<float> &A, const vector<float> &x,
337  view1D<matrix::Dense<float>, float> &y);
339  const view1D<vector<float>, float> &x, vector<float> &y);
341  const view1D<vector<float>, float> &x,
342  view1D<vector<float>, float> &y);
344  const view1D<vector<float>, float> &x,
345  view1D<matrix::Dense<float>, float> &y);
347  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
349  const view1D<matrix::Dense<float>, float> &x,
350  view1D<vector<float>, float> &y);
352  const view1D<matrix::Dense<float>, float> &x,
353  view1D<matrix::Dense<float>, float> &y);
373  vector<double> &y);
375  view1D<vector<double>, double> &y);
377  view1D<matrix::Dense<double>, double> &y);
379  const view1D<vector<double>, double> &x, vector<double> &y);
381  const view1D<vector<double>, double> &x,
382  view1D<vector<double>, double> &y);
384  const view1D<vector<double>, double> &x,
385  view1D<matrix::Dense<double>, double> &y);
387  const view1D<matrix::Dense<double>, double> &x,
388  vector<double> &y);
390  const view1D<matrix::Dense<double>, double> &x,
391  view1D<vector<double>, double> &y);
393  const view1D<matrix::Dense<double>, double> &x,
394  view1D<matrix::Dense<double>, double> &y);
396  vector<float> &y);
398  view1D<vector<float>, float> &y);
400  view1D<matrix::Dense<float>, float> &y);
402  const view1D<vector<float>, float> &x, vector<float> &y);
404  const view1D<vector<float>, float> &x,
405  view1D<vector<float>, float> &y);
407  const view1D<vector<float>, float> &x,
408  view1D<matrix::Dense<float>, float> &y);
410  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
412  const view1D<matrix::Dense<float>, float> &x,
413  view1D<vector<float>, float> &y);
415  const view1D<matrix::Dense<float>, float> &x,
416  view1D<matrix::Dense<float>, float> &y);
436  vector<double> &y);
438  view1D<vector<double>, double> &y);
440  view1D<matrix::Dense<double>, double> &y);
442  const view1D<vector<double>, double> &x, vector<double> &y);
444  const view1D<vector<double>, double> &x,
445  view1D<vector<double>, double> &y);
447  const view1D<vector<double>, double> &x,
448  view1D<matrix::Dense<double>, double> &y);
450  const view1D<matrix::Dense<double>, double> &x,
451  vector<double> &y);
453  const view1D<matrix::Dense<double>, double> &x,
454  view1D<vector<double>, double> &y);
456  const view1D<matrix::Dense<double>, double> &x,
457  view1D<matrix::Dense<double>, double> &y);
459  vector<float> &y);
461  view1D<vector<float>, float> &y);
463  view1D<matrix::Dense<float>, float> &y);
465  const view1D<vector<float>, float> &x, vector<float> &y);
467  const view1D<vector<float>, float> &x,
468  view1D<vector<float>, float> &y);
470  const view1D<vector<float>, float> &x,
471  view1D<matrix::Dense<float>, float> &y);
473  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
475  const view1D<matrix::Dense<float>, float> &x,
476  view1D<vector<float>, float> &y);
478  const view1D<matrix::Dense<float>, float> &x,
479  view1D<matrix::Dense<float>, float> &y);
498 void matvec(const matrix::CRS<double> &A, const vector<double> &x,
499  vector<double> &y);
500 void matvec(const matrix::CRS<double> &A, const vector<double> &x,
501  view1D<vector<double>, double> &y);
502 void matvec(const matrix::CRS<double> &A, const vector<double> &x,
503  view1D<matrix::Dense<double>, double> &y);
505  const view1D<vector<double>, double> &x, vector<double> &y);
507  const view1D<vector<double>, double> &x,
508  view1D<vector<double>, double> &y);
510  const view1D<vector<double>, double> &x,
511  view1D<matrix::Dense<double>, double> &y);
513  const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
515  const view1D<matrix::Dense<double>, double> &x,
516  view1D<vector<double>, double> &y);
518  const view1D<matrix::Dense<double>, double> &x,
519  view1D<matrix::Dense<double>, double> &y);
520 void matvec(const matrix::CRS<float> &A, const vector<float> &x,
521  vector<float> &y);
522 void matvec(const matrix::CRS<float> &A, const vector<float> &x,
523  view1D<vector<float>, float> &y);
524 void matvec(const matrix::CRS<float> &A, const vector<float> &x,
525  view1D<matrix::Dense<float>, float> &y);
526 void matvec(const matrix::CRS<float> &A, const view1D<vector<float>, float> &x,
527  vector<float> &y);
528 void matvec(const matrix::CRS<float> &A, const view1D<vector<float>, float> &x,
529  view1D<vector<float>, float> &y);
530 void matvec(const matrix::CRS<float> &A, const view1D<vector<float>, float> &x,
531  view1D<matrix::Dense<float>, float> &y);
533  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
535  const view1D<matrix::Dense<float>, float> &x,
536  view1D<vector<float>, float> &y);
538  const view1D<matrix::Dense<float>, float> &x,
539  view1D<matrix::Dense<float>, float> &y);
559  vector<double> &y);
561  view1D<vector<double>, double> &y);
563  view1D<matrix::Dense<double>, double> &y);
565  const view1D<vector<double>, double> &x, vector<double> &y);
567  const view1D<vector<double>, double> &x,
568  view1D<vector<double>, double> &y);
570  const view1D<vector<double>, double> &x,
571  view1D<matrix::Dense<double>, double> &y);
573  const view1D<matrix::Dense<double>, double> &x,
574  vector<double> &y);
576  const view1D<matrix::Dense<double>, double> &x,
577  view1D<vector<double>, double> &y);
579  const view1D<matrix::Dense<double>, double> &x,
580  view1D<matrix::Dense<double>, double> &y);
581 void matvec_N(const matrix::CRS<float> &A, const vector<float> &x,
582  vector<float> &y);
583 void matvec_N(const matrix::CRS<float> &A, const vector<float> &x,
584  view1D<vector<float>, float> &y);
585 void matvec_N(const matrix::CRS<float> &A, const vector<float> &x,
586  view1D<matrix::Dense<float>, float> &y);
588  const view1D<vector<float>, float> &x, vector<float> &y);
590  const view1D<vector<float>, float> &x,
591  view1D<vector<float>, float> &y);
593  const view1D<vector<float>, float> &x,
594  view1D<matrix::Dense<float>, float> &y);
596  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
598  const view1D<matrix::Dense<float>, float> &x,
599  view1D<vector<float>, float> &y);
601  const view1D<matrix::Dense<float>, float> &x,
602  view1D<matrix::Dense<float>, float> &y);
622  vector<double> &y);
624  view1D<vector<double>, double> &y);
626  view1D<matrix::Dense<double>, double> &y);
628  const view1D<vector<double>, double> &x, vector<double> &y);
630  const view1D<vector<double>, double> &x,
631  view1D<vector<double>, double> &y);
633  const view1D<vector<double>, double> &x,
634  view1D<matrix::Dense<double>, double> &y);
636  const view1D<matrix::Dense<double>, double> &x,
637  vector<double> &y);
639  const view1D<matrix::Dense<double>, double> &x,
640  view1D<vector<double>, double> &y);
642  const view1D<matrix::Dense<double>, double> &x,
643  view1D<matrix::Dense<double>, double> &y);
644 void matvec_T(const matrix::CRS<float> &A, const vector<float> &x,
645  vector<float> &y);
646 void matvec_T(const matrix::CRS<float> &A, const vector<float> &x,
647  view1D<vector<float>, float> &y);
648 void matvec_T(const matrix::CRS<float> &A, const vector<float> &x,
649  view1D<matrix::Dense<float>, float> &y);
651  const view1D<vector<float>, float> &x, vector<float> &y);
653  const view1D<vector<float>, float> &x,
654  view1D<vector<float>, float> &y);
656  const view1D<vector<float>, float> &x,
657  view1D<matrix::Dense<float>, float> &y);
659  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
661  const view1D<matrix::Dense<float>, float> &x,
662  view1D<vector<float>, float> &y);
664  const view1D<matrix::Dense<float>, float> &x,
665  view1D<matrix::Dense<float>, float> &y);
684  vector<double> &y);
686  view1D<vector<double>, double> &y);
688  view1D<matrix::Dense<double>, double> &y);
690  const view1D<vector<double>, double> &x, vector<double> &y);
692  const view1D<vector<double>, double> &x,
693  view1D<vector<double>, double> &y);
695  const view1D<vector<double>, double> &x,
696  view1D<matrix::Dense<double>, double> &y);
698  const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
700  const view1D<matrix::Dense<double>, double> &x,
701  view1D<vector<double>, double> &y);
703  const view1D<matrix::Dense<double>, double> &x,
704  view1D<matrix::Dense<double>, double> &y);
706  vector<float> &y);
708  view1D<vector<float>, float> &y);
710  view1D<matrix::Dense<float>, float> &y);
712  const view1D<vector<float>, float> &x, vector<float> &y);
714  const view1D<vector<float>, float> &x,
715  view1D<vector<float>, float> &y);
717  const view1D<vector<float>, float> &x,
718  view1D<matrix::Dense<float>, float> &y);
720  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
722  const view1D<matrix::Dense<float>, float> &x,
723  view1D<vector<float>, float> &y);
725  const view1D<matrix::Dense<float>, float> &x,
726  view1D<matrix::Dense<float>, float> &y);
745  vector<double> &y);
747  view1D<vector<double>, double> &y);
749  view1D<matrix::Dense<double>, double> &y);
751  const view1D<vector<double>, double> &x, vector<double> &y);
753  const view1D<vector<double>, double> &x,
754  view1D<vector<double>, double> &y);
756  const view1D<vector<double>, double> &x,
757  view1D<matrix::Dense<double>, double> &y);
759  const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
761  const view1D<matrix::Dense<double>, double> &x,
762  view1D<vector<double>, double> &y);
764  const view1D<matrix::Dense<double>, double> &x,
765  view1D<matrix::Dense<double>, double> &y);
767  vector<float> &y);
769  view1D<vector<float>, float> &y);
771  view1D<matrix::Dense<float>, float> &y);
773  const view1D<vector<float>, float> &x, vector<float> &y);
775  const view1D<vector<float>, float> &x,
776  view1D<vector<float>, float> &y);
778  const view1D<vector<float>, float> &x,
779  view1D<matrix::Dense<float>, float> &y);
781  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
783  const view1D<matrix::Dense<float>, float> &x,
784  view1D<vector<float>, float> &y);
786  const view1D<matrix::Dense<float>, float> &x,
787  view1D<matrix::Dense<float>, float> &y);
790 } // namespace blas
791 } // namespace monolish
Compressed Row Storage (CRS) format Matrix.
Dense format Matrix.
Linear Operator imitating Matrix.
void matvec_N(const matrix::Dense< double > &A, const vector< double > &x, vector< double > &y)
Dense matrix and vector multiplication: y = A^N x.
void matvec_T(const matrix::Dense< double > &A, const vector< double > &x, vector< double > &y)
Dense matrix and vector multiplication: y = A^T x.
void matvec(const matrix::Dense< double > &A, const vector< double > &x, vector< double > &y)
Dense matrix and vector multiplication: y = Ax.
void rmatvec(const matrix::LinearOperator< double > &A, const vector< double > &x, vector< double > &y)
Adjoint LinearOperator matrix and vector multiplication: y = A^Hx.
void times_col(const matrix::Dense< double > &A, const vector< double > &x, matrix::Dense< double > &C)
Dense matrix and vector times: C[i][j] = A[i][j] * x[i].
void times_row(const matrix::Dense< double > &A, const vector< double > &x, matrix::Dense< double > &C)
Dense matrix and vector times: C[i][j] = A[i][j] * x[j].
monolish namespaces