Kokkos Node API and Local Linear Algebra Kernels Version of the Day
Kokkos_Raw_SparseMatVec_decl.hpp
Go to the documentation of this file.
00001 //@HEADER
00002 // ************************************************************************
00003 // 
00004 //          Kokkos: Node API and Parallel Node Kernels
00005 //              Copyright (2008) Sandia Corporation
00006 // 
00007 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00008 // the U.S. Government retains certain rights in this software.
00009 // 
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
00038 // 
00039 // ************************************************************************
00040 //@HEADER
00041 
00042 #ifndef __Kokkos_Raw_SparseMatVec_decl_hpp
00043 #define __Kokkos_Raw_SparseMatVec_decl_hpp
00044 
00051 
00052 namespace Kokkos {
00053 namespace Raw {
00054 
00087 
00088 template<class Ordinal,
00089          class MatrixScalar,
00090          class DomainScalar,
00091          class RangeScalar>
00092 void
00093 matVecCscColMajorForfor (
00094   const Ordinal numRows,
00095   const Ordinal numCols,
00096   const Ordinal numVecs,
00097   const RangeScalar& beta,
00098   RangeScalar Y[],
00099   const Ordinal colStrideY,
00100   const RangeScalar& alpha,
00101   const size_t  ptr[],
00102   const Ordinal ind[],
00103   const MatrixScalar val[],
00104   const DomainScalar X[],
00105   const Ordinal colStrideX);
00106 
00139 
00140 template<class Ordinal,
00141          class MatrixScalar,
00142          class DomainScalar,
00143          class RangeScalar>
00144 void
00145 matVecCscColMajorForfor4Unrolled (
00146   const Ordinal numRows,
00147   const Ordinal numCols,
00148   const Ordinal numVecs,
00149   const RangeScalar& beta,
00150   RangeScalar Y[],
00151   const Ordinal colStrideY,
00152   const RangeScalar& alpha,
00153   const size_t  ptr[],
00154   const Ordinal ind[],
00155   const MatrixScalar val[],
00156   const DomainScalar X[],
00157   const Ordinal colStrideX);
00158 
00189 
00190 template<class Ordinal,
00191          class MatrixScalar,
00192          class DomainScalar,
00193          class RangeScalar>
00194 void
00195 matVecCscColMajorForfor1Vec (
00196   const Ordinal numRows,
00197   const Ordinal numCols,
00198   const Ordinal numVecs,
00199   const RangeScalar& beta,
00200   RangeScalar Y[],
00201   const Ordinal colStrideY,
00202   const RangeScalar& alpha,
00203   const size_t  ptr[],
00204   const Ordinal ind[],
00205   const MatrixScalar val[],
00206   const DomainScalar X[],
00207   const Ordinal colStrideX);
00208 
00239 
00240 template<class Ordinal,
00241          class MatrixScalar,
00242          class DomainScalar,
00243          class RangeScalar>
00244 void
00245 matVecCscColMajorForfor2Vec (
00246   const Ordinal numRows,
00247   const Ordinal numCols,
00248   const Ordinal numVecs,
00249   const RangeScalar& beta,
00250   RangeScalar Y[],
00251   const Ordinal colStrideY,
00252   const RangeScalar& alpha,
00253   const size_t  ptr[],
00254   const Ordinal ind[],
00255   const MatrixScalar val[],
00256   const DomainScalar X[],
00257   const Ordinal colStrideX);
00258 
00289 
00290 template<class Ordinal,
00291          class MatrixScalar,
00292          class DomainScalar,
00293          class RangeScalar>
00294 void
00295 matVecCscColMajorForfor3Vec (
00296   const Ordinal numRows,
00297   const Ordinal numCols,
00298   const Ordinal numVecs,
00299   const RangeScalar& beta,
00300   RangeScalar Y[],
00301   const Ordinal colStrideY,
00302   const RangeScalar& alpha,
00303   const size_t  ptr[],
00304   const Ordinal ind[],
00305   const MatrixScalar val[],
00306   const DomainScalar X[],
00307   const Ordinal colStrideX);
00308 
00339 
00340 template<class Ordinal,
00341          class MatrixScalar,
00342          class DomainScalar,
00343          class RangeScalar>
00344 void
00345 matVecCscColMajorForfor4Vec (
00346   const Ordinal numRows,
00347   const Ordinal numCols,
00348   const Ordinal numVecs,
00349   const RangeScalar& beta,
00350   RangeScalar Y[],
00351   const Ordinal colStrideY,
00352   const RangeScalar& alpha,
00353   const size_t  ptr[],
00354   const Ordinal ind[],
00355   const MatrixScalar val[],
00356   const DomainScalar X[],
00357   const Ordinal colStrideX);
00358 
00389 
00390 template<class Ordinal,
00391          class MatrixScalar,
00392          class DomainScalar,
00393          class RangeScalar>
00394 void
00395 matVecCscColMajorForwhile1Vec (
00396   const Ordinal numRows,
00397   const Ordinal numCols,
00398   const Ordinal numVecs,
00399   const RangeScalar& beta,
00400   RangeScalar Y[],
00401   const Ordinal colStrideY,
00402   const RangeScalar& alpha,
00403   const size_t  ptr[],
00404   const Ordinal ind[],
00405   const MatrixScalar val[],
00406   const DomainScalar X[],
00407   const Ordinal colStrideX);
00408 
00439 
00440 template<class Ordinal,
00441          class MatrixScalar,
00442          class DomainScalar,
00443          class RangeScalar>
00444 void
00445 matVecCscColMajorForwhile2Vec (
00446   const Ordinal numRows,
00447   const Ordinal numCols,
00448   const Ordinal numVecs,
00449   const RangeScalar& beta,
00450   RangeScalar Y[],
00451   const Ordinal colStrideY,
00452   const RangeScalar& alpha,
00453   const size_t  ptr[],
00454   const Ordinal ind[],
00455   const MatrixScalar val[],
00456   const DomainScalar X[],
00457   const Ordinal colStrideX);
00458 
00489 
00490 template<class Ordinal,
00491          class MatrixScalar,
00492          class DomainScalar,
00493          class RangeScalar>
00494 void
00495 matVecCscColMajorForwhile3Vec (
00496   const Ordinal numRows,
00497   const Ordinal numCols,
00498   const Ordinal numVecs,
00499   const RangeScalar& beta,
00500   RangeScalar Y[],
00501   const Ordinal colStrideY,
00502   const RangeScalar& alpha,
00503   const size_t  ptr[],
00504   const Ordinal ind[],
00505   const MatrixScalar val[],
00506   const DomainScalar X[],
00507   const Ordinal colStrideX);
00508 
00539 
00540 template<class Ordinal,
00541          class MatrixScalar,
00542          class DomainScalar,
00543          class RangeScalar>
00544 void
00545 matVecCscColMajorForwhile4Vec (
00546   const Ordinal numRows,
00547   const Ordinal numCols,
00548   const Ordinal numVecs,
00549   const RangeScalar& beta,
00550   RangeScalar Y[],
00551   const Ordinal colStrideY,
00552   const RangeScalar& alpha,
00553   const size_t  ptr[],
00554   const Ordinal ind[],
00555   const MatrixScalar val[],
00556   const DomainScalar X[],
00557   const Ordinal colStrideX);
00558 
00589 
00590 template<class Ordinal,
00591          class MatrixScalar,
00592          class DomainScalar,
00593          class RangeScalar>
00594 void
00595 matVecCscColMajorForif1Vec (
00596   const Ordinal numRows,
00597   const Ordinal numCols,
00598   const Ordinal numVecs,
00599   const RangeScalar& beta,
00600   RangeScalar Y[],
00601   const Ordinal colStrideY,
00602   const RangeScalar& alpha,
00603   const size_t  ptr[],
00604   const Ordinal ind[],
00605   const MatrixScalar val[],
00606   const DomainScalar X[],
00607   const Ordinal colStrideX);
00608 
00639 
00640 template<class Ordinal,
00641          class MatrixScalar,
00642          class DomainScalar,
00643          class RangeScalar>
00644 void
00645 matVecCscColMajorForif2Vec (
00646   const Ordinal numRows,
00647   const Ordinal numCols,
00648   const Ordinal numVecs,
00649   const RangeScalar& beta,
00650   RangeScalar Y[],
00651   const Ordinal colStrideY,
00652   const RangeScalar& alpha,
00653   const size_t  ptr[],
00654   const Ordinal ind[],
00655   const MatrixScalar val[],
00656   const DomainScalar X[],
00657   const Ordinal colStrideX);
00658 
00689 
00690 template<class Ordinal,
00691          class MatrixScalar,
00692          class DomainScalar,
00693          class RangeScalar>
00694 void
00695 matVecCscColMajorForif3Vec (
00696   const Ordinal numRows,
00697   const Ordinal numCols,
00698   const Ordinal numVecs,
00699   const RangeScalar& beta,
00700   RangeScalar Y[],
00701   const Ordinal colStrideY,
00702   const RangeScalar& alpha,
00703   const size_t  ptr[],
00704   const Ordinal ind[],
00705   const MatrixScalar val[],
00706   const DomainScalar X[],
00707   const Ordinal colStrideX);
00708 
00739 
00740 template<class Ordinal,
00741          class MatrixScalar,
00742          class DomainScalar,
00743          class RangeScalar>
00744 void
00745 matVecCscColMajorForif4Vec (
00746   const Ordinal numRows,
00747   const Ordinal numCols,
00748   const Ordinal numVecs,
00749   const RangeScalar& beta,
00750   RangeScalar Y[],
00751   const Ordinal colStrideY,
00752   const RangeScalar& alpha,
00753   const size_t  ptr[],
00754   const Ordinal ind[],
00755   const MatrixScalar val[],
00756   const DomainScalar X[],
00757   const Ordinal colStrideX);
00758 
00791 
00792 template<class Ordinal,
00793          class MatrixScalar,
00794          class DomainScalar,
00795          class RangeScalar>
00796 void
00797 matVecCsrColMajorForfor (
00798   const Ordinal numRows,
00799   const Ordinal numCols,
00800   const Ordinal numVecs,
00801   const RangeScalar& beta,
00802   RangeScalar Y[],
00803   const Ordinal colStrideY,
00804   const RangeScalar& alpha,
00805   const size_t  ptr[],
00806   const Ordinal ind[],
00807   const MatrixScalar val[],
00808   const DomainScalar X[],
00809   const Ordinal colStrideX);
00810 
00843 
00844 template<class Ordinal,
00845          class MatrixScalar,
00846          class DomainScalar,
00847          class RangeScalar>
00848 void
00849 matVecCsrColMajorForforOmp (
00850   const Ordinal numRows,
00851   const Ordinal numCols,
00852   const Ordinal numVecs,
00853   const RangeScalar& beta,
00854   RangeScalar Y[],
00855   const Ordinal colStrideY,
00856   const RangeScalar& alpha,
00857   const size_t  ptr[],
00858   const Ordinal ind[],
00859   const MatrixScalar val[],
00860   const DomainScalar X[],
00861   const Ordinal colStrideX);
00862 
00895 
00896 template<class Ordinal,
00897          class MatrixScalar,
00898          class DomainScalar,
00899          class RangeScalar>
00900 void
00901 matVecCsrColMajorForfor4Unrolled (
00902   const Ordinal numRows,
00903   const Ordinal numCols,
00904   const Ordinal numVecs,
00905   const RangeScalar& beta,
00906   RangeScalar Y[],
00907   const Ordinal colStrideY,
00908   const RangeScalar& alpha,
00909   const size_t  ptr[],
00910   const Ordinal ind[],
00911   const MatrixScalar val[],
00912   const DomainScalar X[],
00913   const Ordinal colStrideX);
00914 
00947 
00948 template<class Ordinal,
00949          class MatrixScalar,
00950          class DomainScalar,
00951          class RangeScalar>
00952 void
00953 matVecCsrColMajorForfor4UnrolledOmp (
00954   const Ordinal numRows,
00955   const Ordinal numCols,
00956   const Ordinal numVecs,
00957   const RangeScalar& beta,
00958   RangeScalar Y[],
00959   const Ordinal colStrideY,
00960   const RangeScalar& alpha,
00961   const size_t  ptr[],
00962   const Ordinal ind[],
00963   const MatrixScalar val[],
00964   const DomainScalar X[],
00965   const Ordinal colStrideX);
00966 
00997 
00998 template<class Ordinal,
00999          class MatrixScalar,
01000          class DomainScalar,
01001          class RangeScalar>
01002 void
01003 matVecCsrColMajorForfor1Vec (
01004   const Ordinal numRows,
01005   const Ordinal numCols,
01006   const Ordinal numVecs,
01007   const RangeScalar& beta,
01008   RangeScalar Y[],
01009   const Ordinal colStrideY,
01010   const RangeScalar& alpha,
01011   const size_t  ptr[],
01012   const Ordinal ind[],
01013   const MatrixScalar val[],
01014   const DomainScalar X[],
01015   const Ordinal colStrideX);
01016 
01047 
01048 template<class Ordinal,
01049          class MatrixScalar,
01050          class DomainScalar,
01051          class RangeScalar>
01052 void
01053 matVecCsrColMajorForfor1VecOmp (
01054   const Ordinal numRows,
01055   const Ordinal numCols,
01056   const Ordinal numVecs,
01057   const RangeScalar& beta,
01058   RangeScalar Y[],
01059   const Ordinal colStrideY,
01060   const RangeScalar& alpha,
01061   const size_t  ptr[],
01062   const Ordinal ind[],
01063   const MatrixScalar val[],
01064   const DomainScalar X[],
01065   const Ordinal colStrideX);
01066 
01097 
01098 template<class Ordinal,
01099          class MatrixScalar,
01100          class DomainScalar,
01101          class RangeScalar>
01102 void
01103 matVecCsrColMajorForfor2Vec (
01104   const Ordinal numRows,
01105   const Ordinal numCols,
01106   const Ordinal numVecs,
01107   const RangeScalar& beta,
01108   RangeScalar Y[],
01109   const Ordinal colStrideY,
01110   const RangeScalar& alpha,
01111   const size_t  ptr[],
01112   const Ordinal ind[],
01113   const MatrixScalar val[],
01114   const DomainScalar X[],
01115   const Ordinal colStrideX);
01116 
01147 
01148 template<class Ordinal,
01149          class MatrixScalar,
01150          class DomainScalar,
01151          class RangeScalar>
01152 void
01153 matVecCsrColMajorForfor2VecOmp (
01154   const Ordinal numRows,
01155   const Ordinal numCols,
01156   const Ordinal numVecs,
01157   const RangeScalar& beta,
01158   RangeScalar Y[],
01159   const Ordinal colStrideY,
01160   const RangeScalar& alpha,
01161   const size_t  ptr[],
01162   const Ordinal ind[],
01163   const MatrixScalar val[],
01164   const DomainScalar X[],
01165   const Ordinal colStrideX);
01166 
01197 
01198 template<class Ordinal,
01199          class MatrixScalar,
01200          class DomainScalar,
01201          class RangeScalar>
01202 void
01203 matVecCsrColMajorForfor3Vec (
01204   const Ordinal numRows,
01205   const Ordinal numCols,
01206   const Ordinal numVecs,
01207   const RangeScalar& beta,
01208   RangeScalar Y[],
01209   const Ordinal colStrideY,
01210   const RangeScalar& alpha,
01211   const size_t  ptr[],
01212   const Ordinal ind[],
01213   const MatrixScalar val[],
01214   const DomainScalar X[],
01215   const Ordinal colStrideX);
01216 
01247 
01248 template<class Ordinal,
01249          class MatrixScalar,
01250          class DomainScalar,
01251          class RangeScalar>
01252 void
01253 matVecCsrColMajorForfor3VecOmp (
01254   const Ordinal numRows,
01255   const Ordinal numCols,
01256   const Ordinal numVecs,
01257   const RangeScalar& beta,
01258   RangeScalar Y[],
01259   const Ordinal colStrideY,
01260   const RangeScalar& alpha,
01261   const size_t  ptr[],
01262   const Ordinal ind[],
01263   const MatrixScalar val[],
01264   const DomainScalar X[],
01265   const Ordinal colStrideX);
01266 
01297 
01298 template<class Ordinal,
01299          class MatrixScalar,
01300          class DomainScalar,
01301          class RangeScalar>
01302 void
01303 matVecCsrColMajorForfor4Vec (
01304   const Ordinal numRows,
01305   const Ordinal numCols,
01306   const Ordinal numVecs,
01307   const RangeScalar& beta,
01308   RangeScalar Y[],
01309   const Ordinal colStrideY,
01310   const RangeScalar& alpha,
01311   const size_t  ptr[],
01312   const Ordinal ind[],
01313   const MatrixScalar val[],
01314   const DomainScalar X[],
01315   const Ordinal colStrideX);
01316 
01347 
01348 template<class Ordinal,
01349          class MatrixScalar,
01350          class DomainScalar,
01351          class RangeScalar>
01352 void
01353 matVecCsrColMajorForfor4VecOmp (
01354   const Ordinal numRows,
01355   const Ordinal numCols,
01356   const Ordinal numVecs,
01357   const RangeScalar& beta,
01358   RangeScalar Y[],
01359   const Ordinal colStrideY,
01360   const RangeScalar& alpha,
01361   const size_t  ptr[],
01362   const Ordinal ind[],
01363   const MatrixScalar val[],
01364   const DomainScalar X[],
01365   const Ordinal colStrideX);
01366 
01397 
01398 template<class Ordinal,
01399          class MatrixScalar,
01400          class DomainScalar,
01401          class RangeScalar>
01402 void
01403 matVecCsrColMajorForwhile1Vec (
01404   const Ordinal numRows,
01405   const Ordinal numCols,
01406   const Ordinal numVecs,
01407   const RangeScalar& beta,
01408   RangeScalar Y[],
01409   const Ordinal colStrideY,
01410   const RangeScalar& alpha,
01411   const size_t  ptr[],
01412   const Ordinal ind[],
01413   const MatrixScalar val[],
01414   const DomainScalar X[],
01415   const Ordinal colStrideX);
01416 
01447 
01448 template<class Ordinal,
01449          class MatrixScalar,
01450          class DomainScalar,
01451          class RangeScalar>
01452 void
01453 matVecCsrColMajorForwhile2Vec (
01454   const Ordinal numRows,
01455   const Ordinal numCols,
01456   const Ordinal numVecs,
01457   const RangeScalar& beta,
01458   RangeScalar Y[],
01459   const Ordinal colStrideY,
01460   const RangeScalar& alpha,
01461   const size_t  ptr[],
01462   const Ordinal ind[],
01463   const MatrixScalar val[],
01464   const DomainScalar X[],
01465   const Ordinal colStrideX);
01466 
01497 
01498 template<class Ordinal,
01499          class MatrixScalar,
01500          class DomainScalar,
01501          class RangeScalar>
01502 void
01503 matVecCsrColMajorForwhile3Vec (
01504   const Ordinal numRows,
01505   const Ordinal numCols,
01506   const Ordinal numVecs,
01507   const RangeScalar& beta,
01508   RangeScalar Y[],
01509   const Ordinal colStrideY,
01510   const RangeScalar& alpha,
01511   const size_t  ptr[],
01512   const Ordinal ind[],
01513   const MatrixScalar val[],
01514   const DomainScalar X[],
01515   const Ordinal colStrideX);
01516 
01547 
01548 template<class Ordinal,
01549          class MatrixScalar,
01550          class DomainScalar,
01551          class RangeScalar>
01552 void
01553 matVecCsrColMajorForwhile4Vec (
01554   const Ordinal numRows,
01555   const Ordinal numCols,
01556   const Ordinal numVecs,
01557   const RangeScalar& beta,
01558   RangeScalar Y[],
01559   const Ordinal colStrideY,
01560   const RangeScalar& alpha,
01561   const size_t  ptr[],
01562   const Ordinal ind[],
01563   const MatrixScalar val[],
01564   const DomainScalar X[],
01565   const Ordinal colStrideX);
01566 
01597 
01598 template<class Ordinal,
01599          class MatrixScalar,
01600          class DomainScalar,
01601          class RangeScalar>
01602 void
01603 matVecCsrColMajorForif1Vec (
01604   const Ordinal numRows,
01605   const Ordinal numCols,
01606   const Ordinal numVecs,
01607   const RangeScalar& beta,
01608   RangeScalar Y[],
01609   const Ordinal colStrideY,
01610   const RangeScalar& alpha,
01611   const size_t  ptr[],
01612   const Ordinal ind[],
01613   const MatrixScalar val[],
01614   const DomainScalar X[],
01615   const Ordinal colStrideX);
01616 
01647 
01648 template<class Ordinal,
01649          class MatrixScalar,
01650          class DomainScalar,
01651          class RangeScalar>
01652 void
01653 matVecCsrColMajorForif2Vec (
01654   const Ordinal numRows,
01655   const Ordinal numCols,
01656   const Ordinal numVecs,
01657   const RangeScalar& beta,
01658   RangeScalar Y[],
01659   const Ordinal colStrideY,
01660   const RangeScalar& alpha,
01661   const size_t  ptr[],
01662   const Ordinal ind[],
01663   const MatrixScalar val[],
01664   const DomainScalar X[],
01665   const Ordinal colStrideX);
01666 
01697 
01698 template<class Ordinal,
01699          class MatrixScalar,
01700          class DomainScalar,
01701          class RangeScalar>
01702 void
01703 matVecCsrColMajorForif3Vec (
01704   const Ordinal numRows,
01705   const Ordinal numCols,
01706   const Ordinal numVecs,
01707   const RangeScalar& beta,
01708   RangeScalar Y[],
01709   const Ordinal colStrideY,
01710   const RangeScalar& alpha,
01711   const size_t  ptr[],
01712   const Ordinal ind[],
01713   const MatrixScalar val[],
01714   const DomainScalar X[],
01715   const Ordinal colStrideX);
01716 
01747 
01748 template<class Ordinal,
01749          class MatrixScalar,
01750          class DomainScalar,
01751          class RangeScalar>
01752 void
01753 matVecCsrColMajorForif4Vec (
01754   const Ordinal numRows,
01755   const Ordinal numCols,
01756   const Ordinal numVecs,
01757   const RangeScalar& beta,
01758   RangeScalar Y[],
01759   const Ordinal colStrideY,
01760   const RangeScalar& alpha,
01761   const size_t  ptr[],
01762   const Ordinal ind[],
01763   const MatrixScalar val[],
01764   const DomainScalar X[],
01765   const Ordinal colStrideX);
01766 
01800 
01801 template<class Ordinal,
01802          class MatrixScalar,
01803          class DomainScalar,
01804          class RangeScalar>
01805 void
01806 matVecCscColMajorForforConj (
01807   const Ordinal numRows,
01808   const Ordinal numCols,
01809   const Ordinal numVecs,
01810   const RangeScalar& beta,
01811   RangeScalar Y[],
01812   const Ordinal colStrideY,
01813   const RangeScalar& alpha,
01814   const size_t  ptr[],
01815   const Ordinal ind[],
01816   const MatrixScalar val[],
01817   const DomainScalar X[],
01818   const Ordinal colStrideX);
01819 
01853 
01854 template<class Ordinal,
01855          class MatrixScalar,
01856          class DomainScalar,
01857          class RangeScalar>
01858 void
01859 matVecCscColMajorForforConj4Unrolled (
01860   const Ordinal numRows,
01861   const Ordinal numCols,
01862   const Ordinal numVecs,
01863   const RangeScalar& beta,
01864   RangeScalar Y[],
01865   const Ordinal colStrideY,
01866   const RangeScalar& alpha,
01867   const size_t  ptr[],
01868   const Ordinal ind[],
01869   const MatrixScalar val[],
01870   const DomainScalar X[],
01871   const Ordinal colStrideX);
01872 
01904 
01905 template<class Ordinal,
01906          class MatrixScalar,
01907          class DomainScalar,
01908          class RangeScalar>
01909 void
01910 matVecCscColMajorForforConj1Vec (
01911   const Ordinal numRows,
01912   const Ordinal numCols,
01913   const Ordinal numVecs,
01914   const RangeScalar& beta,
01915   RangeScalar Y[],
01916   const Ordinal colStrideY,
01917   const RangeScalar& alpha,
01918   const size_t  ptr[],
01919   const Ordinal ind[],
01920   const MatrixScalar val[],
01921   const DomainScalar X[],
01922   const Ordinal colStrideX);
01923 
01955 
01956 template<class Ordinal,
01957          class MatrixScalar,
01958          class DomainScalar,
01959          class RangeScalar>
01960 void
01961 matVecCscColMajorForforConj2Vec (
01962   const Ordinal numRows,
01963   const Ordinal numCols,
01964   const Ordinal numVecs,
01965   const RangeScalar& beta,
01966   RangeScalar Y[],
01967   const Ordinal colStrideY,
01968   const RangeScalar& alpha,
01969   const size_t  ptr[],
01970   const Ordinal ind[],
01971   const MatrixScalar val[],
01972   const DomainScalar X[],
01973   const Ordinal colStrideX);
01974 
02006 
02007 template<class Ordinal,
02008          class MatrixScalar,
02009          class DomainScalar,
02010          class RangeScalar>
02011 void
02012 matVecCscColMajorForforConj3Vec (
02013   const Ordinal numRows,
02014   const Ordinal numCols,
02015   const Ordinal numVecs,
02016   const RangeScalar& beta,
02017   RangeScalar Y[],
02018   const Ordinal colStrideY,
02019   const RangeScalar& alpha,
02020   const size_t  ptr[],
02021   const Ordinal ind[],
02022   const MatrixScalar val[],
02023   const DomainScalar X[],
02024   const Ordinal colStrideX);
02025 
02057 
02058 template<class Ordinal,
02059          class MatrixScalar,
02060          class DomainScalar,
02061          class RangeScalar>
02062 void
02063 matVecCscColMajorForforConj4Vec (
02064   const Ordinal numRows,
02065   const Ordinal numCols,
02066   const Ordinal numVecs,
02067   const RangeScalar& beta,
02068   RangeScalar Y[],
02069   const Ordinal colStrideY,
02070   const RangeScalar& alpha,
02071   const size_t  ptr[],
02072   const Ordinal ind[],
02073   const MatrixScalar val[],
02074   const DomainScalar X[],
02075   const Ordinal colStrideX);
02076 
02108 
02109 template<class Ordinal,
02110          class MatrixScalar,
02111          class DomainScalar,
02112          class RangeScalar>
02113 void
02114 matVecCscColMajorForwhileConj1Vec (
02115   const Ordinal numRows,
02116   const Ordinal numCols,
02117   const Ordinal numVecs,
02118   const RangeScalar& beta,
02119   RangeScalar Y[],
02120   const Ordinal colStrideY,
02121   const RangeScalar& alpha,
02122   const size_t  ptr[],
02123   const Ordinal ind[],
02124   const MatrixScalar val[],
02125   const DomainScalar X[],
02126   const Ordinal colStrideX);
02127 
02159 
02160 template<class Ordinal,
02161          class MatrixScalar,
02162          class DomainScalar,
02163          class RangeScalar>
02164 void
02165 matVecCscColMajorForwhileConj2Vec (
02166   const Ordinal numRows,
02167   const Ordinal numCols,
02168   const Ordinal numVecs,
02169   const RangeScalar& beta,
02170   RangeScalar Y[],
02171   const Ordinal colStrideY,
02172   const RangeScalar& alpha,
02173   const size_t  ptr[],
02174   const Ordinal ind[],
02175   const MatrixScalar val[],
02176   const DomainScalar X[],
02177   const Ordinal colStrideX);
02178 
02210 
02211 template<class Ordinal,
02212          class MatrixScalar,
02213          class DomainScalar,
02214          class RangeScalar>
02215 void
02216 matVecCscColMajorForwhileConj3Vec (
02217   const Ordinal numRows,
02218   const Ordinal numCols,
02219   const Ordinal numVecs,
02220   const RangeScalar& beta,
02221   RangeScalar Y[],
02222   const Ordinal colStrideY,
02223   const RangeScalar& alpha,
02224   const size_t  ptr[],
02225   const Ordinal ind[],
02226   const MatrixScalar val[],
02227   const DomainScalar X[],
02228   const Ordinal colStrideX);
02229 
02261 
02262 template<class Ordinal,
02263          class MatrixScalar,
02264          class DomainScalar,
02265          class RangeScalar>
02266 void
02267 matVecCscColMajorForwhileConj4Vec (
02268   const Ordinal numRows,
02269   const Ordinal numCols,
02270   const Ordinal numVecs,
02271   const RangeScalar& beta,
02272   RangeScalar Y[],
02273   const Ordinal colStrideY,
02274   const RangeScalar& alpha,
02275   const size_t  ptr[],
02276   const Ordinal ind[],
02277   const MatrixScalar val[],
02278   const DomainScalar X[],
02279   const Ordinal colStrideX);
02280 
02312 
02313 template<class Ordinal,
02314          class MatrixScalar,
02315          class DomainScalar,
02316          class RangeScalar>
02317 void
02318 matVecCscColMajorForifConj1Vec (
02319   const Ordinal numRows,
02320   const Ordinal numCols,
02321   const Ordinal numVecs,
02322   const RangeScalar& beta,
02323   RangeScalar Y[],
02324   const Ordinal colStrideY,
02325   const RangeScalar& alpha,
02326   const size_t  ptr[],
02327   const Ordinal ind[],
02328   const MatrixScalar val[],
02329   const DomainScalar X[],
02330   const Ordinal colStrideX);
02331 
02363 
02364 template<class Ordinal,
02365          class MatrixScalar,
02366          class DomainScalar,
02367          class RangeScalar>
02368 void
02369 matVecCscColMajorForifConj2Vec (
02370   const Ordinal numRows,
02371   const Ordinal numCols,
02372   const Ordinal numVecs,
02373   const RangeScalar& beta,
02374   RangeScalar Y[],
02375   const Ordinal colStrideY,
02376   const RangeScalar& alpha,
02377   const size_t  ptr[],
02378   const Ordinal ind[],
02379   const MatrixScalar val[],
02380   const DomainScalar X[],
02381   const Ordinal colStrideX);
02382 
02414 
02415 template<class Ordinal,
02416          class MatrixScalar,
02417          class DomainScalar,
02418          class RangeScalar>
02419 void
02420 matVecCscColMajorForifConj3Vec (
02421   const Ordinal numRows,
02422   const Ordinal numCols,
02423   const Ordinal numVecs,
02424   const RangeScalar& beta,
02425   RangeScalar Y[],
02426   const Ordinal colStrideY,
02427   const RangeScalar& alpha,
02428   const size_t  ptr[],
02429   const Ordinal ind[],
02430   const MatrixScalar val[],
02431   const DomainScalar X[],
02432   const Ordinal colStrideX);
02433 
02465 
02466 template<class Ordinal,
02467          class MatrixScalar,
02468          class DomainScalar,
02469          class RangeScalar>
02470 void
02471 matVecCscColMajorForifConj4Vec (
02472   const Ordinal numRows,
02473   const Ordinal numCols,
02474   const Ordinal numVecs,
02475   const RangeScalar& beta,
02476   RangeScalar Y[],
02477   const Ordinal colStrideY,
02478   const RangeScalar& alpha,
02479   const size_t  ptr[],
02480   const Ordinal ind[],
02481   const MatrixScalar val[],
02482   const DomainScalar X[],
02483   const Ordinal colStrideX);
02484 
02518 
02519 template<class Ordinal,
02520          class MatrixScalar,
02521          class DomainScalar,
02522          class RangeScalar>
02523 void
02524 matVecCsrColMajorForforConj (
02525   const Ordinal numRows,
02526   const Ordinal numCols,
02527   const Ordinal numVecs,
02528   const RangeScalar& beta,
02529   RangeScalar Y[],
02530   const Ordinal colStrideY,
02531   const RangeScalar& alpha,
02532   const size_t  ptr[],
02533   const Ordinal ind[],
02534   const MatrixScalar val[],
02535   const DomainScalar X[],
02536   const Ordinal colStrideX);
02537 
02571 
02572 template<class Ordinal,
02573          class MatrixScalar,
02574          class DomainScalar,
02575          class RangeScalar>
02576 void
02577 matVecCsrColMajorForforConjOmp (
02578   const Ordinal numRows,
02579   const Ordinal numCols,
02580   const Ordinal numVecs,
02581   const RangeScalar& beta,
02582   RangeScalar Y[],
02583   const Ordinal colStrideY,
02584   const RangeScalar& alpha,
02585   const size_t  ptr[],
02586   const Ordinal ind[],
02587   const MatrixScalar val[],
02588   const DomainScalar X[],
02589   const Ordinal colStrideX);
02590 
02624 
02625 template<class Ordinal,
02626          class MatrixScalar,
02627          class DomainScalar,
02628          class RangeScalar>
02629 void
02630 matVecCsrColMajorForforConj4Unrolled (
02631   const Ordinal numRows,
02632   const Ordinal numCols,
02633   const Ordinal numVecs,
02634   const RangeScalar& beta,
02635   RangeScalar Y[],
02636   const Ordinal colStrideY,
02637   const RangeScalar& alpha,
02638   const size_t  ptr[],
02639   const Ordinal ind[],
02640   const MatrixScalar val[],
02641   const DomainScalar X[],
02642   const Ordinal colStrideX);
02643 
02677 
02678 template<class Ordinal,
02679          class MatrixScalar,
02680          class DomainScalar,
02681          class RangeScalar>
02682 void
02683 matVecCsrColMajorForforConj4UnrolledOmp (
02684   const Ordinal numRows,
02685   const Ordinal numCols,
02686   const Ordinal numVecs,
02687   const RangeScalar& beta,
02688   RangeScalar Y[],
02689   const Ordinal colStrideY,
02690   const RangeScalar& alpha,
02691   const size_t  ptr[],
02692   const Ordinal ind[],
02693   const MatrixScalar val[],
02694   const DomainScalar X[],
02695   const Ordinal colStrideX);
02696 
02728 
02729 template<class Ordinal,
02730          class MatrixScalar,
02731          class DomainScalar,
02732          class RangeScalar>
02733 void
02734 matVecCsrColMajorForforConj1Vec (
02735   const Ordinal numRows,
02736   const Ordinal numCols,
02737   const Ordinal numVecs,
02738   const RangeScalar& beta,
02739   RangeScalar Y[],
02740   const Ordinal colStrideY,
02741   const RangeScalar& alpha,
02742   const size_t  ptr[],
02743   const Ordinal ind[],
02744   const MatrixScalar val[],
02745   const DomainScalar X[],
02746   const Ordinal colStrideX);
02747 
02779 
02780 template<class Ordinal,
02781          class MatrixScalar,
02782          class DomainScalar,
02783          class RangeScalar>
02784 void
02785 matVecCsrColMajorForforConj1VecOmp (
02786   const Ordinal numRows,
02787   const Ordinal numCols,
02788   const Ordinal numVecs,
02789   const RangeScalar& beta,
02790   RangeScalar Y[],
02791   const Ordinal colStrideY,
02792   const RangeScalar& alpha,
02793   const size_t  ptr[],
02794   const Ordinal ind[],
02795   const MatrixScalar val[],
02796   const DomainScalar X[],
02797   const Ordinal colStrideX);
02798 
02830 
02831 template<class Ordinal,
02832          class MatrixScalar,
02833          class DomainScalar,
02834          class RangeScalar>
02835 void
02836 matVecCsrColMajorForforConj2Vec (
02837   const Ordinal numRows,
02838   const Ordinal numCols,
02839   const Ordinal numVecs,
02840   const RangeScalar& beta,
02841   RangeScalar Y[],
02842   const Ordinal colStrideY,
02843   const RangeScalar& alpha,
02844   const size_t  ptr[],
02845   const Ordinal ind[],
02846   const MatrixScalar val[],
02847   const DomainScalar X[],
02848   const Ordinal colStrideX);
02849 
02881 
02882 template<class Ordinal,
02883          class MatrixScalar,
02884          class DomainScalar,
02885          class RangeScalar>
02886 void
02887 matVecCsrColMajorForforConj2VecOmp (
02888   const Ordinal numRows,
02889   const Ordinal numCols,
02890   const Ordinal numVecs,
02891   const RangeScalar& beta,
02892   RangeScalar Y[],
02893   const Ordinal colStrideY,
02894   const RangeScalar& alpha,
02895   const size_t  ptr[],
02896   const Ordinal ind[],
02897   const MatrixScalar val[],
02898   const DomainScalar X[],
02899   const Ordinal colStrideX);
02900 
02932 
02933 template<class Ordinal,
02934          class MatrixScalar,
02935          class DomainScalar,
02936          class RangeScalar>
02937 void
02938 matVecCsrColMajorForforConj3Vec (
02939   const Ordinal numRows,
02940   const Ordinal numCols,
02941   const Ordinal numVecs,
02942   const RangeScalar& beta,
02943   RangeScalar Y[],
02944   const Ordinal colStrideY,
02945   const RangeScalar& alpha,
02946   const size_t  ptr[],
02947   const Ordinal ind[],
02948   const MatrixScalar val[],
02949   const DomainScalar X[],
02950   const Ordinal colStrideX);
02951 
02983 
02984 template<class Ordinal,
02985          class MatrixScalar,
02986          class DomainScalar,
02987          class RangeScalar>
02988 void
02989 matVecCsrColMajorForforConj3VecOmp (
02990   const Ordinal numRows,
02991   const Ordinal numCols,
02992   const Ordinal numVecs,
02993   const RangeScalar& beta,
02994   RangeScalar Y[],
02995   const Ordinal colStrideY,
02996   const RangeScalar& alpha,
02997   const size_t  ptr[],
02998   const Ordinal ind[],
02999   const MatrixScalar val[],
03000   const DomainScalar X[],
03001   const Ordinal colStrideX);
03002 
03034 
03035 template<class Ordinal,
03036          class MatrixScalar,
03037          class DomainScalar,
03038          class RangeScalar>
03039 void
03040 matVecCsrColMajorForforConj4Vec (
03041   const Ordinal numRows,
03042   const Ordinal numCols,
03043   const Ordinal numVecs,
03044   const RangeScalar& beta,
03045   RangeScalar Y[],
03046   const Ordinal colStrideY,
03047   const RangeScalar& alpha,
03048   const size_t  ptr[],
03049   const Ordinal ind[],
03050   const MatrixScalar val[],
03051   const DomainScalar X[],
03052   const Ordinal colStrideX);
03053 
03085 
03086 template<class Ordinal,
03087          class MatrixScalar,
03088          class DomainScalar,
03089          class RangeScalar>
03090 void
03091 matVecCsrColMajorForforConj4VecOmp (
03092   const Ordinal numRows,
03093   const Ordinal numCols,
03094   const Ordinal numVecs,
03095   const RangeScalar& beta,
03096   RangeScalar Y[],
03097   const Ordinal colStrideY,
03098   const RangeScalar& alpha,
03099   const size_t  ptr[],
03100   const Ordinal ind[],
03101   const MatrixScalar val[],
03102   const DomainScalar X[],
03103   const Ordinal colStrideX);
03104 
03136 
03137 template<class Ordinal,
03138          class MatrixScalar,
03139          class DomainScalar,
03140          class RangeScalar>
03141 void
03142 matVecCsrColMajorForwhileConj1Vec (
03143   const Ordinal numRows,
03144   const Ordinal numCols,
03145   const Ordinal numVecs,
03146   const RangeScalar& beta,
03147   RangeScalar Y[],
03148   const Ordinal colStrideY,
03149   const RangeScalar& alpha,
03150   const size_t  ptr[],
03151   const Ordinal ind[],
03152   const MatrixScalar val[],
03153   const DomainScalar X[],
03154   const Ordinal colStrideX);
03155 
03187 
03188 template<class Ordinal,
03189          class MatrixScalar,
03190          class DomainScalar,
03191          class RangeScalar>
03192 void
03193 matVecCsrColMajorForwhileConj2Vec (
03194   const Ordinal numRows,
03195   const Ordinal numCols,
03196   const Ordinal numVecs,
03197   const RangeScalar& beta,
03198   RangeScalar Y[],
03199   const Ordinal colStrideY,
03200   const RangeScalar& alpha,
03201   const size_t  ptr[],
03202   const Ordinal ind[],
03203   const MatrixScalar val[],
03204   const DomainScalar X[],
03205   const Ordinal colStrideX);
03206 
03238 
03239 template<class Ordinal,
03240          class MatrixScalar,
03241          class DomainScalar,
03242          class RangeScalar>
03243 void
03244 matVecCsrColMajorForwhileConj3Vec (
03245   const Ordinal numRows,
03246   const Ordinal numCols,
03247   const Ordinal numVecs,
03248   const RangeScalar& beta,
03249   RangeScalar Y[],
03250   const Ordinal colStrideY,
03251   const RangeScalar& alpha,
03252   const size_t  ptr[],
03253   const Ordinal ind[],
03254   const MatrixScalar val[],
03255   const DomainScalar X[],
03256   const Ordinal colStrideX);
03257 
03289 
03290 template<class Ordinal,
03291          class MatrixScalar,
03292          class DomainScalar,
03293          class RangeScalar>
03294 void
03295 matVecCsrColMajorForwhileConj4Vec (
03296   const Ordinal numRows,
03297   const Ordinal numCols,
03298   const Ordinal numVecs,
03299   const RangeScalar& beta,
03300   RangeScalar Y[],
03301   const Ordinal colStrideY,
03302   const RangeScalar& alpha,
03303   const size_t  ptr[],
03304   const Ordinal ind[],
03305   const MatrixScalar val[],
03306   const DomainScalar X[],
03307   const Ordinal colStrideX);
03308 
03340 
03341 template<class Ordinal,
03342          class MatrixScalar,
03343          class DomainScalar,
03344          class RangeScalar>
03345 void
03346 matVecCsrColMajorForifConj1Vec (
03347   const Ordinal numRows,
03348   const Ordinal numCols,
03349   const Ordinal numVecs,
03350   const RangeScalar& beta,
03351   RangeScalar Y[],
03352   const Ordinal colStrideY,
03353   const RangeScalar& alpha,
03354   const size_t  ptr[],
03355   const Ordinal ind[],
03356   const MatrixScalar val[],
03357   const DomainScalar X[],
03358   const Ordinal colStrideX);
03359 
03391 
03392 template<class Ordinal,
03393          class MatrixScalar,
03394          class DomainScalar,
03395          class RangeScalar>
03396 void
03397 matVecCsrColMajorForifConj2Vec (
03398   const Ordinal numRows,
03399   const Ordinal numCols,
03400   const Ordinal numVecs,
03401   const RangeScalar& beta,
03402   RangeScalar Y[],
03403   const Ordinal colStrideY,
03404   const RangeScalar& alpha,
03405   const size_t  ptr[],
03406   const Ordinal ind[],
03407   const MatrixScalar val[],
03408   const DomainScalar X[],
03409   const Ordinal colStrideX);
03410 
03442 
03443 template<class Ordinal,
03444          class MatrixScalar,
03445          class DomainScalar,
03446          class RangeScalar>
03447 void
03448 matVecCsrColMajorForifConj3Vec (
03449   const Ordinal numRows,
03450   const Ordinal numCols,
03451   const Ordinal numVecs,
03452   const RangeScalar& beta,
03453   RangeScalar Y[],
03454   const Ordinal colStrideY,
03455   const RangeScalar& alpha,
03456   const size_t  ptr[],
03457   const Ordinal ind[],
03458   const MatrixScalar val[],
03459   const DomainScalar X[],
03460   const Ordinal colStrideX);
03461 
03493 
03494 template<class Ordinal,
03495          class MatrixScalar,
03496          class DomainScalar,
03497          class RangeScalar>
03498 void
03499 matVecCsrColMajorForifConj4Vec (
03500   const Ordinal numRows,
03501   const Ordinal numCols,
03502   const Ordinal numVecs,
03503   const RangeScalar& beta,
03504   RangeScalar Y[],
03505   const Ordinal colStrideY,
03506   const RangeScalar& alpha,
03507   const size_t  ptr[],
03508   const Ordinal ind[],
03509   const MatrixScalar val[],
03510   const DomainScalar X[],
03511   const Ordinal colStrideX);
03512 
03513 } // namespace Raw
03514 } // namespace Kokkos
03515 
03516 #endif // #ifndef __Kokkos_Raw_SparseMatVec_decl_hpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends