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 
00050 
00051 namespace Kokkos {
00052 namespace Raw {
00053 
00086 
00087 template<class Ordinal,
00088          class MatrixScalar,
00089          class DomainScalar,
00090          class RangeScalar>
00091 void
00092 matVecCscColMajor (
00093   const Ordinal numRows,
00094   const Ordinal numCols,
00095   const Ordinal numVecs,
00096   const RangeScalar& beta,
00097   RangeScalar Y[],
00098   const Ordinal colStrideY,
00099   const RangeScalar alpha,
00100   const Ordinal ptr[],
00101   const Ordinal ind[],
00102   const MatrixScalar val[],
00103   const DomainScalar X[],
00104   const Ordinal colStrideX);
00105 
00138 
00139 template<class Ordinal,
00140          class MatrixScalar,
00141          class DomainScalar,
00142          class RangeScalar>
00143 void
00144 matVecCscColMajor4Unrolled (
00145   const Ordinal numRows,
00146   const Ordinal numCols,
00147   const Ordinal numVecs,
00148   const RangeScalar& beta,
00149   RangeScalar Y[],
00150   const Ordinal colStrideY,
00151   const RangeScalar alpha,
00152   const Ordinal ptr[],
00153   const Ordinal ind[],
00154   const MatrixScalar val[],
00155   const DomainScalar X[],
00156   const Ordinal colStrideX);
00157 
00188 
00189 template<class Ordinal,
00190          class MatrixScalar,
00191          class DomainScalar,
00192          class RangeScalar>
00193 void
00194 matVecCscColMajor1Vec (
00195   const Ordinal numRows,
00196   const Ordinal numCols,
00197   const RangeScalar& beta,
00198   RangeScalar Y[],
00199   const Ordinal colStrideY,
00200   const RangeScalar alpha,
00201   const Ordinal ptr[],
00202   const Ordinal ind[],
00203   const MatrixScalar val[],
00204   const DomainScalar X[],
00205   const Ordinal colStrideX);
00206 
00237 
00238 template<class Ordinal,
00239          class MatrixScalar,
00240          class DomainScalar,
00241          class RangeScalar>
00242 void
00243 matVecCscColMajor2Vec (
00244   const Ordinal numRows,
00245   const Ordinal numCols,
00246   const RangeScalar& beta,
00247   RangeScalar Y[],
00248   const Ordinal colStrideY,
00249   const RangeScalar alpha,
00250   const Ordinal ptr[],
00251   const Ordinal ind[],
00252   const MatrixScalar val[],
00253   const DomainScalar X[],
00254   const Ordinal colStrideX);
00255 
00286 
00287 template<class Ordinal,
00288          class MatrixScalar,
00289          class DomainScalar,
00290          class RangeScalar>
00291 void
00292 matVecCscColMajor3Vec (
00293   const Ordinal numRows,
00294   const Ordinal numCols,
00295   const RangeScalar& beta,
00296   RangeScalar Y[],
00297   const Ordinal colStrideY,
00298   const RangeScalar alpha,
00299   const Ordinal ptr[],
00300   const Ordinal ind[],
00301   const MatrixScalar val[],
00302   const DomainScalar X[],
00303   const Ordinal colStrideX);
00304 
00335 
00336 template<class Ordinal,
00337          class MatrixScalar,
00338          class DomainScalar,
00339          class RangeScalar>
00340 void
00341 matVecCscColMajor4Vec (
00342   const Ordinal numRows,
00343   const Ordinal numCols,
00344   const RangeScalar& beta,
00345   RangeScalar Y[],
00346   const Ordinal colStrideY,
00347   const RangeScalar alpha,
00348   const Ordinal ptr[],
00349   const Ordinal ind[],
00350   const MatrixScalar val[],
00351   const DomainScalar X[],
00352   const Ordinal colStrideX);
00353 
00386 
00387 template<class Ordinal,
00388          class MatrixScalar,
00389          class DomainScalar,
00390          class RangeScalar>
00391 void
00392 matVecCsrColMajor (
00393   const Ordinal numRows,
00394   const Ordinal numCols,
00395   const Ordinal numVecs,
00396   const RangeScalar& beta,
00397   RangeScalar Y[],
00398   const Ordinal colStrideY,
00399   const RangeScalar alpha,
00400   const Ordinal ptr[],
00401   const Ordinal ind[],
00402   const MatrixScalar val[],
00403   const DomainScalar X[],
00404   const Ordinal colStrideX);
00405 
00438 
00439 template<class Ordinal,
00440          class MatrixScalar,
00441          class DomainScalar,
00442          class RangeScalar>
00443 void
00444 matVecCsrColMajor4Unrolled (
00445   const Ordinal numRows,
00446   const Ordinal numCols,
00447   const Ordinal numVecs,
00448   const RangeScalar& beta,
00449   RangeScalar Y[],
00450   const Ordinal colStrideY,
00451   const RangeScalar alpha,
00452   const Ordinal ptr[],
00453   const Ordinal ind[],
00454   const MatrixScalar val[],
00455   const DomainScalar X[],
00456   const Ordinal colStrideX);
00457 
00488 
00489 template<class Ordinal,
00490          class MatrixScalar,
00491          class DomainScalar,
00492          class RangeScalar>
00493 void
00494 matVecCsrColMajor1Vec (
00495   const Ordinal numRows,
00496   const Ordinal numCols,
00497   const RangeScalar& beta,
00498   RangeScalar Y[],
00499   const Ordinal colStrideY,
00500   const RangeScalar alpha,
00501   const Ordinal ptr[],
00502   const Ordinal ind[],
00503   const MatrixScalar val[],
00504   const DomainScalar X[],
00505   const Ordinal colStrideX);
00506 
00537 
00538 template<class Ordinal,
00539          class MatrixScalar,
00540          class DomainScalar,
00541          class RangeScalar>
00542 void
00543 matVecCsrColMajor2Vec (
00544   const Ordinal numRows,
00545   const Ordinal numCols,
00546   const RangeScalar& beta,
00547   RangeScalar Y[],
00548   const Ordinal colStrideY,
00549   const RangeScalar alpha,
00550   const Ordinal ptr[],
00551   const Ordinal ind[],
00552   const MatrixScalar val[],
00553   const DomainScalar X[],
00554   const Ordinal colStrideX);
00555 
00586 
00587 template<class Ordinal,
00588          class MatrixScalar,
00589          class DomainScalar,
00590          class RangeScalar>
00591 void
00592 matVecCsrColMajor3Vec (
00593   const Ordinal numRows,
00594   const Ordinal numCols,
00595   const RangeScalar& beta,
00596   RangeScalar Y[],
00597   const Ordinal colStrideY,
00598   const RangeScalar alpha,
00599   const Ordinal ptr[],
00600   const Ordinal ind[],
00601   const MatrixScalar val[],
00602   const DomainScalar X[],
00603   const Ordinal colStrideX);
00604 
00635 
00636 template<class Ordinal,
00637          class MatrixScalar,
00638          class DomainScalar,
00639          class RangeScalar>
00640 void
00641 matVecCsrColMajor4Vec (
00642   const Ordinal numRows,
00643   const Ordinal numCols,
00644   const RangeScalar& beta,
00645   RangeScalar Y[],
00646   const Ordinal colStrideY,
00647   const RangeScalar alpha,
00648   const Ordinal ptr[],
00649   const Ordinal ind[],
00650   const MatrixScalar val[],
00651   const DomainScalar X[],
00652   const Ordinal colStrideX);
00653 
00686 
00687 template<class Ordinal,
00688          class MatrixScalar,
00689          class DomainScalar,
00690          class RangeScalar>
00691 void
00692 matVecCscRowMajor (
00693   const Ordinal numRows,
00694   const Ordinal numCols,
00695   const Ordinal numVecs,
00696   const RangeScalar& beta,
00697   RangeScalar Y[],
00698   const Ordinal rowStrideY,
00699   const RangeScalar alpha,
00700   const Ordinal ptr[],
00701   const Ordinal ind[],
00702   const MatrixScalar val[],
00703   const DomainScalar X[],
00704   const Ordinal rowStrideX);
00705 
00738 
00739 template<class Ordinal,
00740          class MatrixScalar,
00741          class DomainScalar,
00742          class RangeScalar>
00743 void
00744 matVecCscRowMajor4Unrolled (
00745   const Ordinal numRows,
00746   const Ordinal numCols,
00747   const Ordinal numVecs,
00748   const RangeScalar& beta,
00749   RangeScalar Y[],
00750   const Ordinal rowStrideY,
00751   const RangeScalar alpha,
00752   const Ordinal ptr[],
00753   const Ordinal ind[],
00754   const MatrixScalar val[],
00755   const DomainScalar X[],
00756   const Ordinal rowStrideX);
00757 
00788 
00789 template<class Ordinal,
00790          class MatrixScalar,
00791          class DomainScalar,
00792          class RangeScalar>
00793 void
00794 matVecCscRowMajor1Vec (
00795   const Ordinal numRows,
00796   const Ordinal numCols,
00797   const RangeScalar& beta,
00798   RangeScalar Y[],
00799   const Ordinal rowStrideY,
00800   const RangeScalar alpha,
00801   const Ordinal ptr[],
00802   const Ordinal ind[],
00803   const MatrixScalar val[],
00804   const DomainScalar X[],
00805   const Ordinal rowStrideX);
00806 
00837 
00838 template<class Ordinal,
00839          class MatrixScalar,
00840          class DomainScalar,
00841          class RangeScalar>
00842 void
00843 matVecCscRowMajor2Vec (
00844   const Ordinal numRows,
00845   const Ordinal numCols,
00846   const RangeScalar& beta,
00847   RangeScalar Y[],
00848   const Ordinal rowStrideY,
00849   const RangeScalar alpha,
00850   const Ordinal ptr[],
00851   const Ordinal ind[],
00852   const MatrixScalar val[],
00853   const DomainScalar X[],
00854   const Ordinal rowStrideX);
00855 
00886 
00887 template<class Ordinal,
00888          class MatrixScalar,
00889          class DomainScalar,
00890          class RangeScalar>
00891 void
00892 matVecCscRowMajor3Vec (
00893   const Ordinal numRows,
00894   const Ordinal numCols,
00895   const RangeScalar& beta,
00896   RangeScalar Y[],
00897   const Ordinal rowStrideY,
00898   const RangeScalar alpha,
00899   const Ordinal ptr[],
00900   const Ordinal ind[],
00901   const MatrixScalar val[],
00902   const DomainScalar X[],
00903   const Ordinal rowStrideX);
00904 
00935 
00936 template<class Ordinal,
00937          class MatrixScalar,
00938          class DomainScalar,
00939          class RangeScalar>
00940 void
00941 matVecCscRowMajor4Vec (
00942   const Ordinal numRows,
00943   const Ordinal numCols,
00944   const RangeScalar& beta,
00945   RangeScalar Y[],
00946   const Ordinal rowStrideY,
00947   const RangeScalar alpha,
00948   const Ordinal ptr[],
00949   const Ordinal ind[],
00950   const MatrixScalar val[],
00951   const DomainScalar X[],
00952   const Ordinal rowStrideX);
00953 
00986 
00987 template<class Ordinal,
00988          class MatrixScalar,
00989          class DomainScalar,
00990          class RangeScalar>
00991 void
00992 matVecCsrRowMajor (
00993   const Ordinal numRows,
00994   const Ordinal numCols,
00995   const Ordinal numVecs,
00996   const RangeScalar& beta,
00997   RangeScalar Y[],
00998   const Ordinal rowStrideY,
00999   const RangeScalar alpha,
01000   const Ordinal ptr[],
01001   const Ordinal ind[],
01002   const MatrixScalar val[],
01003   const DomainScalar X[],
01004   const Ordinal rowStrideX);
01005 
01038 
01039 template<class Ordinal,
01040          class MatrixScalar,
01041          class DomainScalar,
01042          class RangeScalar>
01043 void
01044 matVecCsrRowMajor4Unrolled (
01045   const Ordinal numRows,
01046   const Ordinal numCols,
01047   const Ordinal numVecs,
01048   const RangeScalar& beta,
01049   RangeScalar Y[],
01050   const Ordinal rowStrideY,
01051   const RangeScalar alpha,
01052   const Ordinal ptr[],
01053   const Ordinal ind[],
01054   const MatrixScalar val[],
01055   const DomainScalar X[],
01056   const Ordinal rowStrideX);
01057 
01088 
01089 template<class Ordinal,
01090          class MatrixScalar,
01091          class DomainScalar,
01092          class RangeScalar>
01093 void
01094 matVecCsrRowMajor1Vec (
01095   const Ordinal numRows,
01096   const Ordinal numCols,
01097   const RangeScalar& beta,
01098   RangeScalar Y[],
01099   const Ordinal rowStrideY,
01100   const RangeScalar alpha,
01101   const Ordinal ptr[],
01102   const Ordinal ind[],
01103   const MatrixScalar val[],
01104   const DomainScalar X[],
01105   const Ordinal rowStrideX);
01106 
01137 
01138 template<class Ordinal,
01139          class MatrixScalar,
01140          class DomainScalar,
01141          class RangeScalar>
01142 void
01143 matVecCsrRowMajor2Vec (
01144   const Ordinal numRows,
01145   const Ordinal numCols,
01146   const RangeScalar& beta,
01147   RangeScalar Y[],
01148   const Ordinal rowStrideY,
01149   const RangeScalar alpha,
01150   const Ordinal ptr[],
01151   const Ordinal ind[],
01152   const MatrixScalar val[],
01153   const DomainScalar X[],
01154   const Ordinal rowStrideX);
01155 
01186 
01187 template<class Ordinal,
01188          class MatrixScalar,
01189          class DomainScalar,
01190          class RangeScalar>
01191 void
01192 matVecCsrRowMajor3Vec (
01193   const Ordinal numRows,
01194   const Ordinal numCols,
01195   const RangeScalar& beta,
01196   RangeScalar Y[],
01197   const Ordinal rowStrideY,
01198   const RangeScalar alpha,
01199   const Ordinal ptr[],
01200   const Ordinal ind[],
01201   const MatrixScalar val[],
01202   const DomainScalar X[],
01203   const Ordinal rowStrideX);
01204 
01235 
01236 template<class Ordinal,
01237          class MatrixScalar,
01238          class DomainScalar,
01239          class RangeScalar>
01240 void
01241 matVecCsrRowMajor4Vec (
01242   const Ordinal numRows,
01243   const Ordinal numCols,
01244   const RangeScalar& beta,
01245   RangeScalar Y[],
01246   const Ordinal rowStrideY,
01247   const RangeScalar alpha,
01248   const Ordinal ptr[],
01249   const Ordinal ind[],
01250   const MatrixScalar val[],
01251   const DomainScalar X[],
01252   const Ordinal rowStrideX);
01253 
01287 
01288 template<class Ordinal,
01289          class MatrixScalar,
01290          class DomainScalar,
01291          class RangeScalar>
01292 void
01293 matVecCscColMajorConj (
01294   const Ordinal numRows,
01295   const Ordinal numCols,
01296   const Ordinal numVecs,
01297   const RangeScalar& beta,
01298   RangeScalar Y[],
01299   const Ordinal colStrideY,
01300   const RangeScalar alpha,
01301   const Ordinal ptr[],
01302   const Ordinal ind[],
01303   const MatrixScalar val[],
01304   const DomainScalar X[],
01305   const Ordinal colStrideX);
01306 
01340 
01341 template<class Ordinal,
01342          class MatrixScalar,
01343          class DomainScalar,
01344          class RangeScalar>
01345 void
01346 matVecCscColMajorConj4Unrolled (
01347   const Ordinal numRows,
01348   const Ordinal numCols,
01349   const Ordinal numVecs,
01350   const RangeScalar& beta,
01351   RangeScalar Y[],
01352   const Ordinal colStrideY,
01353   const RangeScalar alpha,
01354   const Ordinal ptr[],
01355   const Ordinal ind[],
01356   const MatrixScalar val[],
01357   const DomainScalar X[],
01358   const Ordinal colStrideX);
01359 
01391 
01392 template<class Ordinal,
01393          class MatrixScalar,
01394          class DomainScalar,
01395          class RangeScalar>
01396 void
01397 matVecCscColMajorConj1Vec (
01398   const Ordinal numRows,
01399   const Ordinal numCols,
01400   const RangeScalar& beta,
01401   RangeScalar Y[],
01402   const Ordinal colStrideY,
01403   const RangeScalar alpha,
01404   const Ordinal ptr[],
01405   const Ordinal ind[],
01406   const MatrixScalar val[],
01407   const DomainScalar X[],
01408   const Ordinal colStrideX);
01409 
01441 
01442 template<class Ordinal,
01443          class MatrixScalar,
01444          class DomainScalar,
01445          class RangeScalar>
01446 void
01447 matVecCscColMajorConj2Vec (
01448   const Ordinal numRows,
01449   const Ordinal numCols,
01450   const RangeScalar& beta,
01451   RangeScalar Y[],
01452   const Ordinal colStrideY,
01453   const RangeScalar alpha,
01454   const Ordinal ptr[],
01455   const Ordinal ind[],
01456   const MatrixScalar val[],
01457   const DomainScalar X[],
01458   const Ordinal colStrideX);
01459 
01491 
01492 template<class Ordinal,
01493          class MatrixScalar,
01494          class DomainScalar,
01495          class RangeScalar>
01496 void
01497 matVecCscColMajorConj3Vec (
01498   const Ordinal numRows,
01499   const Ordinal numCols,
01500   const RangeScalar& beta,
01501   RangeScalar Y[],
01502   const Ordinal colStrideY,
01503   const RangeScalar alpha,
01504   const Ordinal ptr[],
01505   const Ordinal ind[],
01506   const MatrixScalar val[],
01507   const DomainScalar X[],
01508   const Ordinal colStrideX);
01509 
01541 
01542 template<class Ordinal,
01543          class MatrixScalar,
01544          class DomainScalar,
01545          class RangeScalar>
01546 void
01547 matVecCscColMajorConj4Vec (
01548   const Ordinal numRows,
01549   const Ordinal numCols,
01550   const RangeScalar& beta,
01551   RangeScalar Y[],
01552   const Ordinal colStrideY,
01553   const RangeScalar alpha,
01554   const Ordinal ptr[],
01555   const Ordinal ind[],
01556   const MatrixScalar val[],
01557   const DomainScalar X[],
01558   const Ordinal colStrideX);
01559 
01593 
01594 template<class Ordinal,
01595          class MatrixScalar,
01596          class DomainScalar,
01597          class RangeScalar>
01598 void
01599 matVecCsrColMajorConj (
01600   const Ordinal numRows,
01601   const Ordinal numCols,
01602   const Ordinal numVecs,
01603   const RangeScalar& beta,
01604   RangeScalar Y[],
01605   const Ordinal colStrideY,
01606   const RangeScalar alpha,
01607   const Ordinal ptr[],
01608   const Ordinal ind[],
01609   const MatrixScalar val[],
01610   const DomainScalar X[],
01611   const Ordinal colStrideX);
01612 
01646 
01647 template<class Ordinal,
01648          class MatrixScalar,
01649          class DomainScalar,
01650          class RangeScalar>
01651 void
01652 matVecCsrColMajorConj4Unrolled (
01653   const Ordinal numRows,
01654   const Ordinal numCols,
01655   const Ordinal numVecs,
01656   const RangeScalar& beta,
01657   RangeScalar Y[],
01658   const Ordinal colStrideY,
01659   const RangeScalar alpha,
01660   const Ordinal ptr[],
01661   const Ordinal ind[],
01662   const MatrixScalar val[],
01663   const DomainScalar X[],
01664   const Ordinal colStrideX);
01665 
01697 
01698 template<class Ordinal,
01699          class MatrixScalar,
01700          class DomainScalar,
01701          class RangeScalar>
01702 void
01703 matVecCsrColMajorConj1Vec (
01704   const Ordinal numRows,
01705   const Ordinal numCols,
01706   const RangeScalar& beta,
01707   RangeScalar Y[],
01708   const Ordinal colStrideY,
01709   const RangeScalar alpha,
01710   const Ordinal ptr[],
01711   const Ordinal ind[],
01712   const MatrixScalar val[],
01713   const DomainScalar X[],
01714   const Ordinal colStrideX);
01715 
01747 
01748 template<class Ordinal,
01749          class MatrixScalar,
01750          class DomainScalar,
01751          class RangeScalar>
01752 void
01753 matVecCsrColMajorConj2Vec (
01754   const Ordinal numRows,
01755   const Ordinal numCols,
01756   const RangeScalar& beta,
01757   RangeScalar Y[],
01758   const Ordinal colStrideY,
01759   const RangeScalar alpha,
01760   const Ordinal ptr[],
01761   const Ordinal ind[],
01762   const MatrixScalar val[],
01763   const DomainScalar X[],
01764   const Ordinal colStrideX);
01765 
01797 
01798 template<class Ordinal,
01799          class MatrixScalar,
01800          class DomainScalar,
01801          class RangeScalar>
01802 void
01803 matVecCsrColMajorConj3Vec (
01804   const Ordinal numRows,
01805   const Ordinal numCols,
01806   const RangeScalar& beta,
01807   RangeScalar Y[],
01808   const Ordinal colStrideY,
01809   const RangeScalar alpha,
01810   const Ordinal ptr[],
01811   const Ordinal ind[],
01812   const MatrixScalar val[],
01813   const DomainScalar X[],
01814   const Ordinal colStrideX);
01815 
01847 
01848 template<class Ordinal,
01849          class MatrixScalar,
01850          class DomainScalar,
01851          class RangeScalar>
01852 void
01853 matVecCsrColMajorConj4Vec (
01854   const Ordinal numRows,
01855   const Ordinal numCols,
01856   const RangeScalar& beta,
01857   RangeScalar Y[],
01858   const Ordinal colStrideY,
01859   const RangeScalar alpha,
01860   const Ordinal ptr[],
01861   const Ordinal ind[],
01862   const MatrixScalar val[],
01863   const DomainScalar X[],
01864   const Ordinal colStrideX);
01865 
01899 
01900 template<class Ordinal,
01901          class MatrixScalar,
01902          class DomainScalar,
01903          class RangeScalar>
01904 void
01905 matVecCscRowMajorConj (
01906   const Ordinal numRows,
01907   const Ordinal numCols,
01908   const Ordinal numVecs,
01909   const RangeScalar& beta,
01910   RangeScalar Y[],
01911   const Ordinal rowStrideY,
01912   const RangeScalar alpha,
01913   const Ordinal ptr[],
01914   const Ordinal ind[],
01915   const MatrixScalar val[],
01916   const DomainScalar X[],
01917   const Ordinal rowStrideX);
01918 
01952 
01953 template<class Ordinal,
01954          class MatrixScalar,
01955          class DomainScalar,
01956          class RangeScalar>
01957 void
01958 matVecCscRowMajorConj4Unrolled (
01959   const Ordinal numRows,
01960   const Ordinal numCols,
01961   const Ordinal numVecs,
01962   const RangeScalar& beta,
01963   RangeScalar Y[],
01964   const Ordinal rowStrideY,
01965   const RangeScalar alpha,
01966   const Ordinal ptr[],
01967   const Ordinal ind[],
01968   const MatrixScalar val[],
01969   const DomainScalar X[],
01970   const Ordinal rowStrideX);
01971 
02003 
02004 template<class Ordinal,
02005          class MatrixScalar,
02006          class DomainScalar,
02007          class RangeScalar>
02008 void
02009 matVecCscRowMajorConj1Vec (
02010   const Ordinal numRows,
02011   const Ordinal numCols,
02012   const RangeScalar& beta,
02013   RangeScalar Y[],
02014   const Ordinal rowStrideY,
02015   const RangeScalar alpha,
02016   const Ordinal ptr[],
02017   const Ordinal ind[],
02018   const MatrixScalar val[],
02019   const DomainScalar X[],
02020   const Ordinal rowStrideX);
02021 
02053 
02054 template<class Ordinal,
02055          class MatrixScalar,
02056          class DomainScalar,
02057          class RangeScalar>
02058 void
02059 matVecCscRowMajorConj2Vec (
02060   const Ordinal numRows,
02061   const Ordinal numCols,
02062   const RangeScalar& beta,
02063   RangeScalar Y[],
02064   const Ordinal rowStrideY,
02065   const RangeScalar alpha,
02066   const Ordinal ptr[],
02067   const Ordinal ind[],
02068   const MatrixScalar val[],
02069   const DomainScalar X[],
02070   const Ordinal rowStrideX);
02071 
02103 
02104 template<class Ordinal,
02105          class MatrixScalar,
02106          class DomainScalar,
02107          class RangeScalar>
02108 void
02109 matVecCscRowMajorConj3Vec (
02110   const Ordinal numRows,
02111   const Ordinal numCols,
02112   const RangeScalar& beta,
02113   RangeScalar Y[],
02114   const Ordinal rowStrideY,
02115   const RangeScalar alpha,
02116   const Ordinal ptr[],
02117   const Ordinal ind[],
02118   const MatrixScalar val[],
02119   const DomainScalar X[],
02120   const Ordinal rowStrideX);
02121 
02153 
02154 template<class Ordinal,
02155          class MatrixScalar,
02156          class DomainScalar,
02157          class RangeScalar>
02158 void
02159 matVecCscRowMajorConj4Vec (
02160   const Ordinal numRows,
02161   const Ordinal numCols,
02162   const RangeScalar& beta,
02163   RangeScalar Y[],
02164   const Ordinal rowStrideY,
02165   const RangeScalar alpha,
02166   const Ordinal ptr[],
02167   const Ordinal ind[],
02168   const MatrixScalar val[],
02169   const DomainScalar X[],
02170   const Ordinal rowStrideX);
02171 
02205 
02206 template<class Ordinal,
02207          class MatrixScalar,
02208          class DomainScalar,
02209          class RangeScalar>
02210 void
02211 matVecCsrRowMajorConj (
02212   const Ordinal numRows,
02213   const Ordinal numCols,
02214   const Ordinal numVecs,
02215   const RangeScalar& beta,
02216   RangeScalar Y[],
02217   const Ordinal rowStrideY,
02218   const RangeScalar alpha,
02219   const Ordinal ptr[],
02220   const Ordinal ind[],
02221   const MatrixScalar val[],
02222   const DomainScalar X[],
02223   const Ordinal rowStrideX);
02224 
02258 
02259 template<class Ordinal,
02260          class MatrixScalar,
02261          class DomainScalar,
02262          class RangeScalar>
02263 void
02264 matVecCsrRowMajorConj4Unrolled (
02265   const Ordinal numRows,
02266   const Ordinal numCols,
02267   const Ordinal numVecs,
02268   const RangeScalar& beta,
02269   RangeScalar Y[],
02270   const Ordinal rowStrideY,
02271   const RangeScalar alpha,
02272   const Ordinal ptr[],
02273   const Ordinal ind[],
02274   const MatrixScalar val[],
02275   const DomainScalar X[],
02276   const Ordinal rowStrideX);
02277 
02309 
02310 template<class Ordinal,
02311          class MatrixScalar,
02312          class DomainScalar,
02313          class RangeScalar>
02314 void
02315 matVecCsrRowMajorConj1Vec (
02316   const Ordinal numRows,
02317   const Ordinal numCols,
02318   const RangeScalar& beta,
02319   RangeScalar Y[],
02320   const Ordinal rowStrideY,
02321   const RangeScalar alpha,
02322   const Ordinal ptr[],
02323   const Ordinal ind[],
02324   const MatrixScalar val[],
02325   const DomainScalar X[],
02326   const Ordinal rowStrideX);
02327 
02359 
02360 template<class Ordinal,
02361          class MatrixScalar,
02362          class DomainScalar,
02363          class RangeScalar>
02364 void
02365 matVecCsrRowMajorConj2Vec (
02366   const Ordinal numRows,
02367   const Ordinal numCols,
02368   const RangeScalar& beta,
02369   RangeScalar Y[],
02370   const Ordinal rowStrideY,
02371   const RangeScalar alpha,
02372   const Ordinal ptr[],
02373   const Ordinal ind[],
02374   const MatrixScalar val[],
02375   const DomainScalar X[],
02376   const Ordinal rowStrideX);
02377 
02409 
02410 template<class Ordinal,
02411          class MatrixScalar,
02412          class DomainScalar,
02413          class RangeScalar>
02414 void
02415 matVecCsrRowMajorConj3Vec (
02416   const Ordinal numRows,
02417   const Ordinal numCols,
02418   const RangeScalar& beta,
02419   RangeScalar Y[],
02420   const Ordinal rowStrideY,
02421   const RangeScalar alpha,
02422   const Ordinal ptr[],
02423   const Ordinal ind[],
02424   const MatrixScalar val[],
02425   const DomainScalar X[],
02426   const Ordinal rowStrideX);
02427 
02459 
02460 template<class Ordinal,
02461          class MatrixScalar,
02462          class DomainScalar,
02463          class RangeScalar>
02464 void
02465 matVecCsrRowMajorConj4Vec (
02466   const Ordinal numRows,
02467   const Ordinal numCols,
02468   const RangeScalar& beta,
02469   RangeScalar Y[],
02470   const Ordinal rowStrideY,
02471   const RangeScalar alpha,
02472   const Ordinal ptr[],
02473   const Ordinal ind[],
02474   const MatrixScalar val[],
02475   const DomainScalar X[],
02476   const Ordinal rowStrideX);
02477 
02478 } // namespace Raw
02479 } // namespace Kokkos
02480 
02481 #endif // #ifndef __Kokkos_Raw_SparseMatVec_decl_hpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends