BeBOP Optimized Sparse Kernel Interface Library
1.0.1h
|
00001 00007 #if !defined(INC_OSKI_A_AND_AT_H) && !defined(OSKI_UNBIND) 00008 00009 #define INC_OSKI_A_AND_AT_H 00010 00011 #include <oski/matmult.h> 00012 00013 #if defined(DO_NAME_MANGLING) 00014 00016 #define oski_MatMultAndMatTransMult_funcpt \ 00017 MANGLE_(oski_MatMultAndMatTransMult_funcpt) 00018 #define oski_MatReprMultAndMatReprTransMult_funcpt \ 00019 MANGLE_(oski_MatReprMultAndMatReprTransMult_funcpt) 00020 00021 #define oski_MatMultAndMatTransMult \ 00022 MANGLE_(oski_MatMultAndMatTransMult) 00023 #define oski_CheckArgsMatMultAndMatTransMult \ 00024 MANGLE_(oski_CheckArgsMatMultAndMatTransMult) 00025 00026 #define oski_traceargs_MatMultAndMatTransMult_t \ 00027 MANGLE_(oski_traceargs_MatMultAndMatTransMult_t) 00028 #define oski_MakeArglistMatMultAndMatTransMult \ 00029 MANGLE_(oski_MakeArglistMatMultAndMatTransMult) 00030 00031 #endif 00032 00040 int oski_MatMultAndMatTransMult (const oski_matrix_t A_tunable, 00041 oski_value_t alpha, 00042 const oski_vecview_t x_view, 00043 oski_value_t beta, oski_vecview_t y_view, 00044 oski_matop_t opA, oski_value_t omega, 00045 const oski_vecview_t w_view, 00046 oski_value_t zeta, oski_vecview_t z_view); 00047 00053 int oski_CheckArgsMatMultAndMatTransMult (const oski_matrix_t A_tunable, 00054 oski_value_t alpha, 00055 const oski_vecview_t x_view, 00056 oski_value_t beta, 00057 oski_vecview_t y_view, 00058 oski_matop_t op, oski_value_t omega, 00059 const oski_vecview_t w_view, 00060 oski_value_t zeta, 00061 oski_vecview_t z_view, 00062 const char *caller); 00063 00067 typedef int (*oski_MatMultAndMatTransMult_funcpt) (const oski_matrix_t 00068 A_tunable, 00069 oski_value_t alpha, 00070 const oski_vecview_t 00071 x_view, oski_value_t beta, 00072 oski_vecview_t y_view, 00073 oski_matop_t opA, 00074 oski_value_t omega, 00075 const oski_vecview_t 00076 w_view, oski_value_t zeta, 00077 oski_vecview_t z_view); 00078 00083 typedef int (*oski_MatReprMultAndMatReprTransMult_funcpt) (const void *A, 00084 const 00085 oski_matcommon_t * 00086 props, 00087 oski_value_t alpha, 00088 const 00089 oski_vecview_t 00090 x_view, 00091 oski_value_t beta, 00092 oski_vecview_t 00093 y_view, 00094 oski_matop_t opA, 00095 oski_value_t omega, 00096 const 00097 oski_vecview_t 00098 w_view, 00099 oski_value_t zeta, 00100 oski_vecview_t 00101 z_view); 00102 00110 typedef struct 00111 { 00113 00114 oski_value_t alpha; 00115 oski_index_t num_vecs; 00116 oski_storage_t x_orient; 00117 oski_value_t beta; 00118 oski_storage_t y_orient; 00119 oski_matop_t opA; 00120 oski_value_t omega; 00121 oski_storage_t w_orient; 00122 oski_value_t zeta; 00123 oski_storage_t z_orient; 00125 } 00126 oski_traceargs_MatMultAndMatTransMult_t; 00127 00132 void oski_MakeArglistMatMultAndMatTransMult (oski_value_t alpha, 00133 const oski_vecview_t x_view, 00134 oski_value_t beta, 00135 const oski_vecview_t y_view, 00136 oski_matop_t opA, 00137 oski_value_t omega, 00138 const oski_vecview_t w_view, 00139 oski_value_t zeta, 00140 const oski_vecview_t z_view, 00141 oski_traceargs_MatMultAndMatTransMult_t 00142 * args); 00143 00145 #define GET_XFLOP_MatMultAndMatTransMult(args) \ 00146 (4.0*((const oski_traceargs_MatMultAndMatTransMult_t *)(args))->num_vecs) 00147 00149 #endif /* !defined(INC_OSKI_A_AND_AT_H) */ 00150 00151 #if defined(OSKI_UNBIND) 00152 # include <oski/matmult.h> 00153 # undef INC_OSKI_A_AND_AT_H 00154 # undef oski_MatMultAndMatTransMult_funcpt 00155 # undef oski_MatReprMultAndMatReprTransMult_funcpt 00156 # undef oski_MatMultAndMatTransMult 00157 # undef oski_CheckArgsMatMultAndMatTransMult 00158 # undef oski_traceargs_MatMultAndMatTransMult_t 00159 # undef oski_MakeArglistMatMultAndMatTransMult 00160 # undef GET_XFLOP_MatMultAndMatTransMult 00161 #endif 00162 00163 /* eof */