BeBOP Optimized Sparse Kernel Interface Library
1.0.1h
|
00001 00007 #if !defined(INC_OSKI_MBCSR_MODULE_H) 00008 00009 #define INC_OSKI_MBCSR_MODULE_H 00010 00011 #include <oski/matmodexport.h> 00012 #include <oski/MBCSR/format.h> 00013 00014 #if defined(DO_NAME_MANGLING) 00015 00017 #define MBCSR_GetSubmatKernel MANGLE_(MBCSR_GetSubmatKernel) 00018 #define MBCSR_InitSubVecView MANGLE_(MBCSR_InitSubVecView) 00019 00020 #define MBCSR_SubmatReprMult_funcpt MANGLE_(MBCSR_SubmatReprMult_funcpt) 00021 00022 #define oski_EnableMBCSRMatMultAndMatMult \ 00023 MANGLE_(oski_EnableMBCSRMatMultAndMatMult) 00024 #define oski_EnableMBCSRMatMultAndMatTransMult \ 00025 MANGLE_(oski_EnableMBCSRMatMultAndMatTransMult) 00026 #define oski_EnableMBCSRMatTransMatMult \ 00027 MANGLE_(oski_EnableMBCSRMatTransMatMult) 00028 #define oski_EnableMBCSRMatPowMult \ 00029 MANGLE_(oski_EnableMBCSRMatPowMult) 00030 #define oski_EnableMBCSRMatTransPowMult \ 00031 MANGLE_(oski_EnableMBCSRMatTransPowMult) 00032 00033 #endif 00034 00036 typedef int (*MBCSR_SubmatReprMult_funcpt) (const oski_submatMBCSR_t * A, 00037 oski_matop_t opA, 00038 oski_value_t alpha, 00039 const oski_vecview_t x_view, 00040 oski_vecview_t y_view); 00041 00043 typedef int (*MBCSR_SubmatReprTransSubmatReprMult_funcpt) (const 00044 oski_submatMBCSR_t 00045 * A, 00046 oski_value_t alpha, 00047 const 00048 oski_vecview_t x, 00049 oski_vecview_t y, 00050 oski_vecview_t t); 00051 00053 typedef int (*MBCSR_SymmSubmatReprMult_funcpt) (const oski_submatMBCSR_t * A, 00054 int is_herm, oski_matop_t opA, 00055 oski_value_t alpha, 00056 const oski_vecview_t x_view, 00057 oski_vecview_t y_view); 00058 00060 typedef int (*MBCSR_SubmatReprTrisolve_funcpt) (const oski_submatMBCSR_t * T, 00061 int is_lower, 00062 oski_matop_t opT, 00063 oski_value_t alpha, 00064 oski_vecview_t x); 00065 00070 typedef int (*MBCSR_SubmatReprMultAndSubmatReprTransMult_funcpt) (const 00071 oski_submatMBCSR_t 00072 * A, 00073 oski_value_t 00074 alpha, 00075 const 00076 oski_vecview_t 00077 x, 00078 oski_vecview_t 00079 y, 00080 oski_matop_t 00081 opA, 00082 oski_value_t 00083 omega, 00084 const 00085 oski_vecview_t 00086 w, 00087 oski_vecview_t 00088 z); 00089 00091 void *MBCSR_GetSubmatKernel (const oski_submatMBCSR_t * A, const char *name); 00092 00094 void MBCSR_InitSubVecView (const oski_vecview_t x, 00095 oski_index_t row_start, oski_index_t len, 00096 oski_vecview_t x_sub); 00097 00100 void oski_EnableMBCSRMatTransMatMult (oski_matMBCSR_t * A, int v); 00101 void oski_EnableMBCSRMatMultAndMatMult (oski_matMBCSR_t * A, int v); 00102 void oski_EnableMBCSRMatMultAndMatTransMult (oski_matMBCSR_t * A, int v); 00103 void oski_EnableMBCSRMatPowMult (oski_matMBCSR_t * A, int v); 00104 void oski_EnableMBCSRMatTransPowMult (oski_matMBCSR_t * A, int v); 00107 #endif 00108 00109 /* eof */