LAMA
|
00001 00033 #ifndef LAMA_OPENMPBLAS1_HPP_ 00034 #define LAMA_OPENMPBLAS1_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 // logging 00044 #include <logging/logging.hpp> 00045 00046 namespace lama 00047 { 00048 00054 class LAMA_DLL_IMPORTEXPORT OpenMPBLAS1 00055 { 00056 public: 00057 00061 template<typename T> 00062 static void scal( const IndexType n, const T alpha, T* x, const IndexType incX, SyncToken* syncToken ); 00063 00067 template<typename T> 00068 static T nrm2( const IndexType n, const T* x, const IndexType incX, SyncToken* syncToken ); 00069 00073 template<typename T> 00074 static T asum( const IndexType n, const T* x, const IndexType incX, SyncToken* syncToken ); 00075 00079 template<typename T> 00080 static IndexType iamax( const IndexType n, const T* x, const IndexType incX, SyncToken* syncToken ); 00081 00085 template<typename T> 00086 static T viamax( const IndexType n, const T* x, const IndexType incX, SyncToken* syncToken ); 00087 00091 template<typename T> 00092 static void swap( 00093 const IndexType n, 00094 T* y, 00095 const IndexType incY, 00096 T* x, 00097 const IndexType incX, 00098 SyncToken* syncToken ); 00099 00103 template<typename T> 00104 static void copy( 00105 const IndexType n, 00106 const T* x, 00107 const IndexType incX, 00108 T* y, 00109 const IndexType incY, 00110 SyncToken* syncToken ); 00111 00115 template<typename T> 00116 static void axpy( 00117 const IndexType n, 00118 const T alpha, 00119 const T* x, 00120 const IndexType incX, 00121 T* y, 00122 const IndexType incY, 00123 SyncToken* syncToken ); 00124 00128 template<typename T> 00129 static T dot( 00130 const IndexType n, 00131 const T* x, 00132 const IndexType incX, 00133 const T* y, 00134 const IndexType incY, 00135 SyncToken* syncToken ); 00136 00140 template<typename T> 00141 static void sum( 00142 const IndexType n, 00143 T alpha, 00144 const T* x, 00145 T beta, 00146 const T* y, 00147 T* z, 00148 SyncToken* syncToken ); 00149 00153 template<typename T> 00154 static void rot( 00155 const IndexType n, 00156 T* x, 00157 const IndexType incX, 00158 T* y, 00159 const IndexType incY, 00160 const T c, 00161 const T s, 00162 SyncToken* syncToken ); 00163 00167 template<typename T> 00168 static void rotm( 00169 const IndexType n, 00170 T* x, 00171 const IndexType incX, 00172 T* y, 00173 const IndexType incY, 00174 const T* P, 00175 SyncToken* syncToken ); 00176 00180 template<typename T> 00181 static void rotg( T* a, T* b, T* c, T* s, SyncToken* syncToken ); 00182 00186 template<typename T> 00187 static void rotmg( T* d1, T* d2, T* b1, const T b2, T* P, SyncToken* syncToken ); 00188 00192 template<typename T> 00193 static void ass( const IndexType n, const T value, T* x, SyncToken* syncToken ); 00194 00195 private: 00196 00197 LAMA_LOG_DECL_STATIC_LOGGER( logger ); 00198 00199 }; 00200 00201 } /* namespace lama */ 00202 00203 #endif // LAMA_OPENMPBLAS1_HPP_