LAMA
|
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_