LAMA
|
00001 00033 #ifndef LAMA_LAMABLAS1_HPP_ 00034 #define LAMA_LAMABLAS1_HPP_ 00035 00036 #include <lama/LAMATypes.hpp> 00037 #include <lama/SyncToken.hpp> 00038 00039 #include <logging/logging.hpp> 00040 00041 namespace lama 00042 { 00043 00049 class LAMABLAS1 00050 { 00051 public: 00052 00056 template<typename T> 00057 static void scal( const IndexType n, const T alpha, T* x, const IndexType incX ); 00058 00062 template<typename T> 00063 static T nrm2( const IndexType n, const T* x, const IndexType incX ); 00064 00068 template<typename T> 00069 static T asum( const IndexType n, const T* x, const IndexType incX ); 00070 00074 template<typename T> 00075 static IndexType iamax( const IndexType n, const T* x, const IndexType incX ); 00076 00080 template<typename T> 00081 static T viamax( const IndexType n, const T* x, const IndexType incX ); 00082 00086 template<typename T> 00087 static void swap( 00088 const IndexType n, 00089 T* y, 00090 const IndexType incY, 00091 T* x, 00092 const IndexType incX ); 00093 00097 template<typename T> 00098 static void copy( 00099 const IndexType n, 00100 const T* x, 00101 const IndexType incX, 00102 T* y, 00103 const IndexType incY ); 00104 00108 template<typename T> 00109 static void axpy( 00110 const IndexType n, 00111 const T alpha, 00112 const T* x, 00113 const IndexType incX, 00114 T* y, 00115 const IndexType incY ); 00116 00120 template<typename T> 00121 static T dot( 00122 const IndexType n, 00123 const T* x, 00124 const IndexType incX, 00125 const T* y, 00126 const IndexType incY ); 00127 00131 template<typename T> 00132 static void sum( 00133 const IndexType n, 00134 T alpha, 00135 const T* x, 00136 T beta, 00137 const T* y, 00138 T* z, 00139 SyncToken* syncToken ); 00140 00144 template<typename T> 00145 static void rot( 00146 const IndexType n, 00147 T* x, 00148 const IndexType incX, 00149 T* y, 00150 const IndexType incY, 00151 const T c, 00152 const T s ); 00153 00157 template<typename T> 00158 static void rotm( 00159 const IndexType n, 00160 T* x, 00161 const IndexType incX, 00162 T* y, 00163 const IndexType incY, 00164 const T* P ); 00165 00169 template<typename T> 00170 static void rotg( T* a, T* b, T* c, T* s ); 00171 00175 template<typename T> 00176 static void rotmg( T* d1, T* d2, T* b1, const T b2, T* P ); 00177 00181 template<typename T> 00182 static void ass( const IndexType n, const T value, T* x, SyncToken* syncToken ); 00183 00184 private: 00185 00186 LAMA_LOG_DECL_STATIC_LOGGER( logger ); 00187 00188 }; 00189 00190 } /* namespace lama */ 00191 00192 #endif // LAMA_LAMABLAS1_HPP_