# HG changeset patch # User michelemartone # Date 1368114014 0 # Node ID 4f0ae470d9732bea66a688d3fb6124f82992bba2 # Parent 6e3240fcadb45f2df8b1d0173b75e62d114d0911 interfacing rsb_tune_spmm through the "autotune" keyword parameter. diff -r 6e3240fcadb4 -r 4f0ae470d973 main/sparsersb/src/sparsersb.cc --- a/main/sparsersb/src/sparsersb.cc Thu May 09 14:02:53 2013 +0000 +++ b/main/sparsersb/src/sparsersb.cc Thu May 09 15:40:14 2013 +0000 @@ -1820,6 +1820,43 @@ } #if defined(RSB_LIBRSB_VER) && (RSB_LIBRSB_VER>=10100) + if (nargin >= 2 && isr && args(1).is_string() && args(1).string_value()=="autotune") + { + rsb_err_t errval=RSB_ERR_NO_ERROR; + /* these are user settable */ + rsb_coo_idx_t nrhs=0; + rsb_int_t oitmax=1; + rsb_time_t tmax=2.0; + rsb_int_t tn=0; + rsb_real_t sf=1.0; + rsb_trans_t transA=RSB_TRANSPOSITION_N; + /* TODO: these shall also be user settable */ + const void * alphap=NULL; + const void * betap=NULL; + /* these not */ + rsb_flags_t order=RSB_OI_DMTXORDER; + const void * Bp=NULL; + rsb_nnz_idx_t ldB=0; + rsb_nnz_idx_t ldC=0; + void * Cp=NULL; + + if (nargin > 2) transA = RSB_CHAR_AS_TRANSPOSITION(args(2).string_value()[0]); + if (nargin > 3) nrhs=args(3).scalar_value(); + if (nargin > 4) oitmax=args(4).scalar_value(); + if (nargin > 5) tmax=args(5).scalar_value(); + if (nargin > 6) tn=args(6).scalar_value(); + if (nargin > 7) sf=args(7).scalar_value(); + + if(!osmp || !osmp->mtxAp) + goto ret;/* FIXME: error handling missing here */ + errval = rsb_tune_spmm(&osmp->mtxAp,&sf,&tn,oitmax,tmax,transA,alphap,osmp->mtxAp,nrhs,order,Bp,ldB,betap,Cp,ldC); + /* FIXME: serious error handling missing here */ + goto ret; + } +#endif + + +#if defined(RSB_LIBRSB_VER) && (RSB_LIBRSB_VER>=10100) if (nargin == 3 && isr && args(1).is_string() && args(1).string_value()=="render" && args(2).is_string())