LAMA
|
00001 00033 #ifndef LAMA_OPENMPBLAS2_HPP_ 00034 #define LAMA_OPENMPBLAS2_HPP_ 00035 00036 // for dll_import 00037 #include <lama/config.hpp> 00038 00039 00040 // others 00041 #include <lama/LAMATypes.hpp> 00042 #include <lama/SyncToken.hpp> 00043 00044 #include <lama/openmp/BLASHelper.hpp> 00045 00046 // logging 00047 #include <logging/logging.hpp> 00048 00049 namespace lama 00050 { 00051 00058 class LAMA_DLL_IMPORTEXPORT OpenMPBLAS2 00059 { 00060 public: 00061 00065 template<typename T> 00066 static void gemv( 00067 const enum CBLAS_ORDER order, 00068 const enum CBLAS_TRANSPOSE trans, 00069 const IndexType m, 00070 const IndexType n, 00071 const T alpha, 00072 const T* A, 00073 const IndexType lda, 00074 const T* x, 00075 const IndexType incX, 00076 const T beta, 00077 T* y, 00078 const IndexType incY, 00079 SyncToken* syncToken ); 00080 00084 template<typename T> 00085 static void symv( 00086 const enum CBLAS_ORDER order, 00087 const enum CBLAS_UPLO uplo, 00088 const IndexType n, 00089 const T alpha, 00090 const T* A, 00091 const IndexType lda, 00092 const T* x, 00093 const IndexType incX, 00094 const T beta, 00095 T* y, 00096 const IndexType incY, 00097 SyncToken* syncToken ); 00098 00102 template<typename T> 00103 static void trmv( 00104 const enum CBLAS_ORDER order, 00105 const enum CBLAS_UPLO uplo, 00106 const enum CBLAS_TRANSPOSE trans, 00107 const enum CBLAS_DIAG diag, 00108 const IndexType n, 00109 const T* A, 00110 const IndexType lda, 00111 T* x, 00112 const IndexType incX, 00113 SyncToken* syncToken ); 00114 00118 template<typename T> 00119 static void trsv( 00120 const enum CBLAS_ORDER order, 00121 const enum CBLAS_UPLO uplo, 00122 const enum CBLAS_TRANSPOSE trans, 00123 const enum CBLAS_DIAG diag, 00124 const IndexType n, 00125 const T* A, 00126 const IndexType lda, 00127 T* x, 00128 const IndexType incX, 00129 SyncToken* syncToken ); 00130 00134 template<typename T> 00135 static void gbmv( 00136 const enum CBLAS_ORDER order, 00137 const enum CBLAS_TRANSPOSE trans, 00138 const IndexType m, 00139 const IndexType n, 00140 const IndexType kl, 00141 const IndexType ku, 00142 const T alpha, 00143 const T* A, 00144 const IndexType lda, 00145 const T* x, 00146 const IndexType incX, 00147 const T beta, 00148 T* y, 00149 const IndexType incY, 00150 SyncToken* syncToken ); 00151 00155 template<typename T> 00156 static void sbmv( 00157 const enum CBLAS_ORDER order, 00158 const enum CBLAS_UPLO uplo, 00159 const IndexType n, 00160 const IndexType k, 00161 const T alpha, 00162 const T* A, 00163 const IndexType lda, 00164 const T* x, 00165 const IndexType incX, 00166 const T beta, 00167 T* y, 00168 const IndexType incY, 00169 SyncToken* syncToken ); 00170 00174 template<typename T> 00175 static void tbmv( 00176 const enum CBLAS_ORDER order, 00177 const enum CBLAS_UPLO uplo, 00178 const enum CBLAS_TRANSPOSE trans, 00179 const enum CBLAS_DIAG diag, 00180 const IndexType n, 00181 const IndexType k, 00182 const T* A, 00183 const IndexType lda, 00184 T* x, 00185 const IndexType incX, 00186 SyncToken* syncToken ); 00187 00191 template<typename T> 00192 static void tbsv( 00193 const enum CBLAS_ORDER order, 00194 const enum CBLAS_UPLO uplo, 00195 const enum CBLAS_TRANSPOSE trans, 00196 const enum CBLAS_DIAG diag, 00197 const IndexType n, 00198 const IndexType k, 00199 const T* A, 00200 const IndexType lda, 00201 T* x, 00202 const IndexType incX, 00203 SyncToken* syncToken ); 00204 00208 template<typename T> 00209 static void ger( 00210 const enum CBLAS_ORDER order, 00211 const IndexType m, 00212 const IndexType n, 00213 const T alpha, 00214 const T* x, 00215 const IndexType incX, 00216 const T* y, 00217 const IndexType incY, 00218 T* A, 00219 const IndexType lda, 00220 SyncToken* syncToken ); 00221 00225 template<typename T> 00226 static void syr( 00227 const enum CBLAS_ORDER order, 00228 const enum CBLAS_UPLO uplo, 00229 const IndexType n, 00230 const T alpha, 00231 const T* x, 00232 const IndexType incX, 00233 T* A, 00234 const IndexType lda, 00235 SyncToken* syncToken ); 00236 00240 template<typename T> 00241 static void syr2( 00242 const enum CBLAS_ORDER order, 00243 const enum CBLAS_UPLO uplo, 00244 const IndexType n, 00245 const T alpha, 00246 const T* x, 00247 const IndexType incX, 00248 const T* y, 00249 const IndexType incY, 00250 T* A, 00251 const IndexType lda, 00252 SyncToken* syncToken ); 00253 00257 template<typename T> 00258 static void spmv( 00259 const enum CBLAS_ORDER order, 00260 const enum CBLAS_UPLO uplo, 00261 const IndexType n, 00262 const T alpha, 00263 const T* AP, 00264 const T* x, 00265 const IndexType incX, 00266 const T beta, 00267 T* y, 00268 const IndexType incY, 00269 SyncToken* syncToken ); 00270 00274 template<typename T> 00275 static void spr( 00276 const enum CBLAS_ORDER order, 00277 const enum CBLAS_UPLO uplo, 00278 const IndexType n, 00279 const T alpha, 00280 const T* x, 00281 const IndexType incX, 00282 T* AP, 00283 SyncToken* syncToken ); 00284 00288 template<typename T> 00289 static void spr2( 00290 const enum CBLAS_ORDER order, 00291 const enum CBLAS_UPLO uplo, 00292 const IndexType n, 00293 const T alpha, 00294 const T* x, 00295 const IndexType incX, 00296 const T* y, 00297 const IndexType incY, 00298 T* AP, 00299 SyncToken* syncToken ); 00300 00304 template<typename T> 00305 static void tpmv( 00306 const enum CBLAS_ORDER order, 00307 const enum CBLAS_UPLO uplo, 00308 const enum CBLAS_TRANSPOSE trans, 00309 const enum CBLAS_DIAG diag, 00310 const IndexType n, 00311 const T* AP, 00312 T* x, 00313 const IndexType incX, 00314 SyncToken* syncToken ); 00315 00319 template<typename T> 00320 static void tpsv( 00321 const enum CBLAS_ORDER order, 00322 const enum CBLAS_UPLO uplo, 00323 const enum CBLAS_TRANSPOSE trans, 00324 const enum CBLAS_DIAG diag, 00325 const IndexType n, 00326 const T* Ap, 00327 T* x, 00328 const IndexType incX, 00329 SyncToken* syncToken ); 00330 00335 template<typename T> 00336 static void agemvpbv( 00337 int n, 00338 const double alpha, 00339 const double* const a, 00340 int m, 00341 const double* const x, 00342 const double beta, 00343 const double* const z, 00344 double* y, 00345 SyncToken* syncToken ); 00346 00347 private: 00348 00349 LAMA_LOG_DECL_STATIC_LOGGER( logger ); 00350 00351 }; 00352 00353 } /* namespace lama */ 00354 00355 #endif // LAMA_OPENMPBLAS2_HPP_