monolish  0.16.3
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 
38  const view1D<vector<double>, double> &x,
41  const view1D<matrix::Dense<double>, double> &x,
46  const view1D<vector<float>, float> &x, matrix::Dense<float> &C);
48  const view1D<matrix::Dense<float>, float> &x,
70 void times_row(const matrix::Dense<double> &A, const size_t num,
72 void times_row(const matrix::Dense<double> &A, const size_t num,
73  const view1D<vector<double>, double> &x,
75 void times_row(const matrix::Dense<double> &A, const size_t num,
76  const view1D<matrix::Dense<double>, double> &x,
78 void times_row(const matrix::Dense<float> &A, const size_t num,
79  const vector<float> &x, matrix::Dense<float> &C);
80 void times_row(const matrix::Dense<float> &A, const size_t num,
81  const view1D<vector<float>, float> &x, matrix::Dense<float> &C);
82 void times_row(const matrix::Dense<float> &A, const size_t num,
83  const view1D<matrix::Dense<float>, float> &x,
109  const view1D<vector<double>, double> &x, matrix::CRS<double> &C);
111  const view1D<matrix::CRS<double>, double> &x,
114  matrix::CRS<float> &C);
116  const view1D<vector<float>, float> &x, matrix::CRS<float> &C);
118  const view1D<matrix::CRS<float>, float> &x,
119  matrix::CRS<float> &C);
142 void times_row(const matrix::CRS<double> &A, const size_t num,
143  const vector<double> &x, matrix::CRS<double> &C);
144 void times_row(const matrix::CRS<double> &A, const size_t num,
145  const view1D<vector<double>, double> &x, matrix::CRS<double> &C);
146 void times_row(const matrix::CRS<double> &A, const size_t num,
147  const view1D<matrix::CRS<double>, double> &x,
149 void times_row(const matrix::CRS<float> &A, const size_t num,
150  const vector<float> &x, matrix::CRS<float> &C);
151 void times_row(const matrix::CRS<float> &A, const size_t num,
152  const view1D<vector<float>, float> &x, matrix::CRS<float> &C);
153 void times_row(const matrix::CRS<float> &A, const size_t num,
154  const view1D<matrix::CRS<float>, float> &x,
155  matrix::CRS<float> &C);
178  const view1D<vector<double>, double> &x,
181  const view1D<matrix::Dense<double>, double> &x,
186  const view1D<vector<float>, float> &x, matrix::Dense<float> &C);
188  const view1D<matrix::Dense<float>, float> &x,
210 void times_col(const matrix::Dense<double> &A, const size_t num,
212 void times_col(const matrix::Dense<double> &A, const size_t num,
213  const view1D<vector<double>, double> &x,
215 void times_col(const matrix::Dense<double> &A, const size_t num,
216  const view1D<matrix::Dense<double>, double> &x,
218 void times_col(const matrix::Dense<float> &A, const size_t num,
219  const vector<float> &x, matrix::Dense<float> &C);
220 void times_col(const matrix::Dense<float> &A, const size_t num,
221  const view1D<vector<float>, float> &x, matrix::Dense<float> &C);
222 void times_col(const matrix::Dense<float> &A, const size_t num,
223  const view1D<matrix::Dense<float>, float> &x,
249  const view1D<vector<double>, double> &x, matrix::CRS<double> &C);
251  const view1D<matrix::CRS<double>, double> &x,
254  matrix::CRS<float> &C);
256  const view1D<vector<float>, float> &x, matrix::CRS<float> &C);
258  const view1D<matrix::CRS<float>, float> &x,
259  matrix::CRS<float> &C);
282 void times_col(const matrix::CRS<double> &A, const size_t num,
283  const vector<double> &x, matrix::CRS<double> &C);
284 void times_col(const matrix::CRS<double> &A, const size_t num,
285  const view1D<vector<double>, double> &x, matrix::CRS<double> &C);
286 void times_col(const matrix::CRS<double> &A, const size_t num,
287  const view1D<matrix::CRS<double>, double> &x,
289 void times_col(const matrix::CRS<float> &A, const size_t num,
290  const vector<float> &x, matrix::CRS<float> &C);
291 void times_col(const matrix::CRS<float> &A, const size_t num,
292  const view1D<vector<float>, float> &x, matrix::CRS<float> &C);
293 void times_col(const matrix::CRS<float> &A, const size_t num,
294  const view1D<matrix::CRS<float>, float> &x,
295  matrix::CRS<float> &C);
315  vector<double> &y);
317  view1D<vector<double>, double> &y);
319  view1D<matrix::Dense<double>, double> &y);
321  const view1D<vector<double>, double> &x, vector<double> &y);
323  const view1D<vector<double>, double> &x,
324  view1D<vector<double>, double> &y);
326  const view1D<vector<double>, double> &x,
327  view1D<matrix::Dense<double>, double> &y);
329  const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
331  const view1D<matrix::Dense<double>, double> &x,
332  view1D<vector<double>, double> &y);
334  const view1D<matrix::Dense<double>, double> &x,
335  view1D<matrix::Dense<double>, double> &y);
336 void matvec(const matrix::Dense<float> &A, const vector<float> &x,
337  vector<float> &y);
338 void matvec(const matrix::Dense<float> &A, const vector<float> &x,
339  view1D<vector<float>, float> &y);
340 void matvec(const matrix::Dense<float> &A, const vector<float> &x,
341  view1D<matrix::Dense<float>, float> &y);
343  const view1D<vector<float>, float> &x, vector<float> &y);
345  const view1D<vector<float>, float> &x,
346  view1D<vector<float>, float> &y);
348  const view1D<vector<float>, float> &x,
349  view1D<matrix::Dense<float>, float> &y);
351  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
353  const view1D<matrix::Dense<float>, float> &x,
354  view1D<vector<float>, float> &y);
356  const view1D<matrix::Dense<float>, float> &x,
357  view1D<matrix::Dense<float>, float> &y);
377  vector<double> &y);
379  view1D<vector<double>, double> &y);
381  view1D<matrix::Dense<double>, double> &y);
383  const view1D<vector<double>, double> &x, vector<double> &y);
385  const view1D<vector<double>, double> &x,
386  view1D<vector<double>, double> &y);
388  const view1D<vector<double>, double> &x,
389  view1D<matrix::Dense<double>, double> &y);
391  const view1D<matrix::Dense<double>, double> &x,
392  vector<double> &y);
394  const view1D<matrix::Dense<double>, double> &x,
395  view1D<vector<double>, double> &y);
397  const view1D<matrix::Dense<double>, double> &x,
398  view1D<matrix::Dense<double>, double> &y);
400  vector<float> &y);
402  view1D<vector<float>, float> &y);
404  view1D<matrix::Dense<float>, float> &y);
406  const view1D<vector<float>, float> &x, vector<float> &y);
408  const view1D<vector<float>, float> &x,
409  view1D<vector<float>, float> &y);
411  const view1D<vector<float>, float> &x,
412  view1D<matrix::Dense<float>, float> &y);
414  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
416  const view1D<matrix::Dense<float>, float> &x,
417  view1D<vector<float>, float> &y);
419  const view1D<matrix::Dense<float>, float> &x,
420  view1D<matrix::Dense<float>, float> &y);
440  vector<double> &y);
442  view1D<vector<double>, double> &y);
444  view1D<matrix::Dense<double>, double> &y);
446  const view1D<vector<double>, double> &x, vector<double> &y);
448  const view1D<vector<double>, double> &x,
449  view1D<vector<double>, double> &y);
451  const view1D<vector<double>, double> &x,
452  view1D<matrix::Dense<double>, double> &y);
454  const view1D<matrix::Dense<double>, double> &x,
455  vector<double> &y);
457  const view1D<matrix::Dense<double>, double> &x,
458  view1D<vector<double>, double> &y);
460  const view1D<matrix::Dense<double>, double> &x,
461  view1D<matrix::Dense<double>, double> &y);
463  vector<float> &y);
465  view1D<vector<float>, float> &y);
467  view1D<matrix::Dense<float>, float> &y);
469  const view1D<vector<float>, float> &x, vector<float> &y);
471  const view1D<vector<float>, float> &x,
472  view1D<vector<float>, float> &y);
474  const view1D<vector<float>, float> &x,
475  view1D<matrix::Dense<float>, float> &y);
477  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
479  const view1D<matrix::Dense<float>, float> &x,
480  view1D<vector<float>, float> &y);
482  const view1D<matrix::Dense<float>, float> &x,
483  view1D<matrix::Dense<float>, float> &y);
502 void matvec(const matrix::CRS<double> &A, const vector<double> &x,
503  vector<double> &y);
504 void matvec(const matrix::CRS<double> &A, const vector<double> &x,
505  view1D<vector<double>, double> &y);
506 void matvec(const matrix::CRS<double> &A, const vector<double> &x,
507  view1D<matrix::Dense<double>, double> &y);
509  const view1D<vector<double>, double> &x, vector<double> &y);
511  const view1D<vector<double>, double> &x,
512  view1D<vector<double>, double> &y);
514  const view1D<vector<double>, double> &x,
515  view1D<matrix::Dense<double>, double> &y);
517  const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
519  const view1D<matrix::Dense<double>, double> &x,
520  view1D<vector<double>, double> &y);
522  const view1D<matrix::Dense<double>, double> &x,
523  view1D<matrix::Dense<double>, double> &y);
524 void matvec(const matrix::CRS<float> &A, const vector<float> &x,
525  vector<float> &y);
526 void matvec(const matrix::CRS<float> &A, const vector<float> &x,
527  view1D<vector<float>, float> &y);
528 void matvec(const matrix::CRS<float> &A, const vector<float> &x,
529  view1D<matrix::Dense<float>, float> &y);
530 void matvec(const matrix::CRS<float> &A, const view1D<vector<float>, float> &x,
531  vector<float> &y);
532 void matvec(const matrix::CRS<float> &A, const view1D<vector<float>, float> &x,
533  view1D<vector<float>, float> &y);
534 void matvec(const matrix::CRS<float> &A, const view1D<vector<float>, float> &x,
535  view1D<matrix::Dense<float>, float> &y);
537  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
539  const view1D<matrix::Dense<float>, float> &x,
540  view1D<vector<float>, float> &y);
542  const view1D<matrix::Dense<float>, float> &x,
543  view1D<matrix::Dense<float>, float> &y);
563  vector<double> &y);
565  view1D<vector<double>, double> &y);
567  view1D<matrix::Dense<double>, double> &y);
569  const view1D<vector<double>, double> &x, vector<double> &y);
571  const view1D<vector<double>, double> &x,
572  view1D<vector<double>, double> &y);
574  const view1D<vector<double>, double> &x,
575  view1D<matrix::Dense<double>, double> &y);
577  const view1D<matrix::Dense<double>, double> &x,
578  vector<double> &y);
580  const view1D<matrix::Dense<double>, double> &x,
581  view1D<vector<double>, double> &y);
583  const view1D<matrix::Dense<double>, double> &x,
584  view1D<matrix::Dense<double>, double> &y);
585 void matvec_N(const matrix::CRS<float> &A, const vector<float> &x,
586  vector<float> &y);
587 void matvec_N(const matrix::CRS<float> &A, const vector<float> &x,
588  view1D<vector<float>, float> &y);
589 void matvec_N(const matrix::CRS<float> &A, const vector<float> &x,
590  view1D<matrix::Dense<float>, float> &y);
592  const view1D<vector<float>, float> &x, vector<float> &y);
594  const view1D<vector<float>, float> &x,
595  view1D<vector<float>, float> &y);
597  const view1D<vector<float>, float> &x,
598  view1D<matrix::Dense<float>, float> &y);
600  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
602  const view1D<matrix::Dense<float>, float> &x,
603  view1D<vector<float>, float> &y);
605  const view1D<matrix::Dense<float>, float> &x,
606  view1D<matrix::Dense<float>, float> &y);
626  vector<double> &y);
628  view1D<vector<double>, double> &y);
630  view1D<matrix::Dense<double>, double> &y);
632  const view1D<vector<double>, double> &x, vector<double> &y);
634  const view1D<vector<double>, double> &x,
635  view1D<vector<double>, double> &y);
637  const view1D<vector<double>, double> &x,
638  view1D<matrix::Dense<double>, double> &y);
640  const view1D<matrix::Dense<double>, double> &x,
641  vector<double> &y);
643  const view1D<matrix::Dense<double>, double> &x,
644  view1D<vector<double>, double> &y);
646  const view1D<matrix::Dense<double>, double> &x,
647  view1D<matrix::Dense<double>, double> &y);
648 void matvec_T(const matrix::CRS<float> &A, const vector<float> &x,
649  vector<float> &y);
650 void matvec_T(const matrix::CRS<float> &A, const vector<float> &x,
651  view1D<vector<float>, float> &y);
652 void matvec_T(const matrix::CRS<float> &A, const vector<float> &x,
653  view1D<matrix::Dense<float>, float> &y);
655  const view1D<vector<float>, float> &x, vector<float> &y);
657  const view1D<vector<float>, float> &x,
658  view1D<vector<float>, float> &y);
660  const view1D<vector<float>, float> &x,
661  view1D<matrix::Dense<float>, float> &y);
663  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
665  const view1D<matrix::Dense<float>, float> &x,
666  view1D<vector<float>, float> &y);
668  const view1D<matrix::Dense<float>, float> &x,
669  view1D<matrix::Dense<float>, float> &y);
688  vector<double> &y);
690  view1D<vector<double>, double> &y);
692  view1D<matrix::Dense<double>, double> &y);
694  const view1D<vector<double>, double> &x, vector<double> &y);
696  const view1D<vector<double>, double> &x,
697  view1D<vector<double>, double> &y);
699  const view1D<vector<double>, double> &x,
700  view1D<matrix::Dense<double>, double> &y);
702  const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
704  const view1D<matrix::Dense<double>, double> &x,
705  view1D<vector<double>, double> &y);
707  const view1D<matrix::Dense<double>, double> &x,
708  view1D<matrix::Dense<double>, double> &y);
710  vector<float> &y);
712  view1D<vector<float>, float> &y);
714  view1D<matrix::Dense<float>, float> &y);
716  const view1D<vector<float>, float> &x, vector<float> &y);
718  const view1D<vector<float>, float> &x,
719  view1D<vector<float>, float> &y);
721  const view1D<vector<float>, float> &x,
722  view1D<matrix::Dense<float>, float> &y);
724  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
726  const view1D<matrix::Dense<float>, float> &x,
727  view1D<vector<float>, float> &y);
729  const view1D<matrix::Dense<float>, float> &x,
730  view1D<matrix::Dense<float>, float> &y);
749  vector<double> &y);
751  view1D<vector<double>, double> &y);
753  view1D<matrix::Dense<double>, double> &y);
755  const view1D<vector<double>, double> &x, vector<double> &y);
757  const view1D<vector<double>, double> &x,
758  view1D<vector<double>, double> &y);
760  const view1D<vector<double>, double> &x,
761  view1D<matrix::Dense<double>, double> &y);
763  const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
765  const view1D<matrix::Dense<double>, double> &x,
766  view1D<vector<double>, double> &y);
768  const view1D<matrix::Dense<double>, double> &x,
769  view1D<matrix::Dense<double>, double> &y);
771  vector<float> &y);
773  view1D<vector<float>, float> &y);
775  view1D<matrix::Dense<float>, float> &y);
777  const view1D<vector<float>, float> &x, vector<float> &y);
779  const view1D<vector<float>, float> &x,
780  view1D<vector<float>, float> &y);
782  const view1D<vector<float>, float> &x,
783  view1D<matrix::Dense<float>, float> &y);
785  const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
787  const view1D<matrix::Dense<float>, float> &x,
788  view1D<vector<float>, float> &y);
790  const view1D<matrix::Dense<float>, float> &x,
791  view1D<matrix::Dense<float>, float> &y);
794 } // namespace blas
795 } // 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)
Column-wise 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)
Row-wise Dense matrix and vector times: C[i][j] = A[i][j] * x[j].
monolish namespaces