BeBOP Optimized Sparse Kernel Interface Library
1.0.1h
|
00001 00007 #if !defined(INC_OSKI_MATPOW_H) && !defined(OSKI_UNBIND) 00008 00009 #define INC_OSKI_MATPOW_H 00010 00011 #include <oski/matmult.h> 00012 00013 #if defined(DO_NAME_MANGLING) 00014 00016 #define oski_MatPowMult_funcpt MANGLE_(oski_MatPowMult_funcpt) 00017 #define oski_MatReprPowMult_funcpt \ 00018 MANGLE_(oski_MatReprPowMult_funcpt) 00019 00020 #define oski_CheckArgsMatPowMult MANGLE_(oski_CheckArgsMatPowMult) 00021 #define oski_MatPowMult MANGLE_(oski_MatPowMult) 00022 00023 #define oski_traceargs_MatPowMult_t \ 00024 MANGLE_(oski_traceargs_MatPowMult_t) 00025 #define oski_MakeArglistMatPowMult \ 00026 MANGLE_(oski_MakeArglistMatPowMult) 00027 00028 #endif 00029 00036 int oski_MatPowMult (const oski_matrix_t A_tunable, 00037 oski_matop_t opA, int power, 00038 oski_value_t alpha, const oski_vecview_t x_view, 00039 oski_value_t beta, oski_vecview_t y_view, 00040 oski_vecview_t T_view); 00041 00045 int oski_CheckArgsMatPowMult (const oski_matrix_t A_tunable, 00046 oski_matop_t opA, int power, 00047 oski_value_t alpha, const oski_vecview_t x_view, 00048 oski_value_t beta, oski_vecview_t y_view, 00049 oski_vecview_t T_view, const char *caller); 00050 00054 typedef int (*oski_MatPowMult_funcpt) (const oski_matrix_t A_tunable, 00055 oski_matop_t opA, int power, 00056 oski_value_t alpha, 00057 const oski_vecview_t x_view, 00058 oski_value_t beta, 00059 oski_vecview_t y_view, 00060 oski_vecview_t T_view); 00061 00066 typedef int (*oski_MatReprPowMult_funcpt) (const void *A, 00067 const oski_matcommon_t * props, 00068 oski_matop_t opA, int power, 00069 oski_value_t alpha, 00070 const oski_vecview_t x_view, 00071 oski_value_t beta, 00072 oski_vecview_t y_view, 00073 oski_vecview_t T_view); 00074 00082 typedef struct 00083 { 00085 00086 oski_matop_t opA; 00087 int power; 00088 oski_index_t num_vecs; 00089 oski_value_t alpha; 00090 oski_storage_t x_orient; 00091 oski_value_t beta; 00092 oski_storage_t y_orient; 00093 oski_storage_t t_orient; 00095 } 00096 oski_traceargs_MatPowMult_t; 00103 void 00104 oski_MakeArglistMatPowMult (oski_matop_t op, int power, 00105 oski_value_t alpha, const oski_vecview_t x_view, 00106 oski_value_t beta, const oski_vecview_t y_view, 00107 const oski_vecview_t T_view, 00108 oski_traceargs_MatPowMult_t * args); 00109 00111 #define GET_XFLOP_MatPowMult( args ) \ 00112 (2.0 * ((const oski_traceargs_MatPowMult_t *)(args))->num_vecs \ 00113 * ((const oski_traceargs_MatPowMult_t *)(args))->power) 00114 00115 #endif /* !defined(INC_OSKI_MATPOW_H) */ 00116 00117 #if defined(OSKI_UNBIND) 00118 # include <oski/matmult.h> 00119 # undef INC_OSKI_MATPOW_H 00120 # undef GET_XFLOP_MatPowMult 00121 # undef oski_MatPowMult_funcpt 00122 # undef oski_MatReprPowMult_funcpt 00123 # undef oski_CheckArgsMatPowMult 00124 # undef oski_MatPowMult 00125 # undef oski_traceargs_MatPowMult_t 00126 # undef oski_MakeArglistMatPowMult 00127 #endif 00128 00129 00130 /* eof */