LAMA
/home/brandes/workspace/LAMA/src/lama/openmp/OpenMPBLAS3.hpp
Go to the documentation of this file.
00001 
00033 #ifndef LAMA_OPENMPBLAS3_HPP_
00034 #define LAMA_OPENMPBLAS3_HPP_
00035 
00036 // for dll_import
00037 #include <lama/config.hpp>
00038 
00039 // others
00040 #include <lama/LAMATypes.hpp>
00041 #include <lama/SyncToken.hpp>
00042 
00043 #include <lama/openmp/BLASHelper.hpp>
00044 
00045 namespace lama
00046 {
00047 
00054 class LAMA_DLL_IMPORTEXPORT OpenMPBLAS3
00055 {
00056 public:
00057    
00060     template<typename T>
00061     static void gemm(
00062         const enum CBLAS_ORDER order,
00063         const enum CBLAS_TRANSPOSE TransA,
00064         const enum CBLAS_TRANSPOSE TransB,
00065         const IndexType M,
00066         const IndexType N,
00067         const IndexType K,
00068         const T alpha,
00069         const T* A,
00070         const IndexType lda,
00071         const T* B,
00072         const IndexType ldb,
00073         const T beta,
00074         T* C,
00075         const IndexType ldc,
00076         SyncToken* syncToken );
00077 
00146     template<typename T>
00147     static void symm(
00148         const enum CBLAS_ORDER order,
00149         const enum CBLAS_SIDE side,
00150         const enum CBLAS_UPLO uplo,
00151         const IndexType m,
00152         const IndexType n,
00153         const T alpha,
00154         const T* A,
00155         const IndexType lda,
00156         const T* B,
00157         const IndexType ldb,
00158         const T beta,
00159         T* C,
00160         const IndexType ldc,
00161         SyncToken* syncToken );
00162 
00226     template<typename T>
00227     static void trmm(
00228         const enum CBLAS_ORDER order,
00229         const enum CBLAS_SIDE Side,
00230         const enum CBLAS_UPLO Uplo,
00231         const enum CBLAS_TRANSPOSE TransA,
00232         const enum CBLAS_DIAG Diag,
00233         const IndexType M,
00234         const IndexType N,
00235         const T alpha,
00236         const T* A,
00237         const IndexType lda,
00238         T* B,
00239         const IndexType ldb,
00240         SyncToken* syncToken );
00241 
00309     template<typename T>
00310     static void trsm(
00311         const enum CBLAS_ORDER order,
00312         const enum CBLAS_SIDE Side,
00313         const enum CBLAS_UPLO Uplo,
00314         const enum CBLAS_TRANSPOSE TransA,
00315         const enum CBLAS_DIAG Diag,
00316         const IndexType M,
00317         const IndexType N,
00318         const T alpha,
00319         const T* A,
00320         const IndexType lda,
00321         T* B,
00322         const IndexType ldb,
00323         SyncToken* syncToken );
00324 
00393     template<typename T>
00394     static void syrk(
00395         const enum CBLAS_ORDER order,
00396         const enum CBLAS_UPLO uplo,
00397         const enum CBLAS_TRANSPOSE trans,
00398         const IndexType n,
00399         const IndexType k,
00400         const T alpha,
00401         const T* A,
00402         const IndexType lda,
00403         const T beta,
00404         T* C,
00405         const IndexType ldc,
00406         SyncToken* syncToken );
00407 
00477     template<typename T>
00478     static void syrk2(
00479         const enum CBLAS_ORDER order,
00480         const enum CBLAS_UPLO uplo,
00481         const enum CBLAS_TRANSPOSE trans,
00482         const IndexType n,
00483         const IndexType k,
00484         const T alpha,
00485         const T* A,
00486         const IndexType lda,
00487         const T* B,
00488         const IndexType ldb,
00489         const T beta,
00490         T* C,
00491         const IndexType ldc,
00492         SyncToken* syncToken );
00493 
00494 private:
00495 
00496     LAMA_LOG_DECL_STATIC_LOGGER( logger );
00497 
00498 };
00499 
00500 } /* namespace lama */
00501 
00502 #endif // LAMA_OPENMPBLAS3_HPP_