1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
//------------------------------------------------------------------------------
// GB_mex_init: initialize GraphBLAS
//------------------------------------------------------------------------------
// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//------------------------------------------------------------------------------
// Returns the status of all global settings.
#include "GB_mex.h"
#define USAGE "[nthreads format hyper_switch " \
"name version date about license compiledate compiletime api api_about" \
" chunk bitmap_switch] = GB_mex_init"
void mexFunction
(
int nargout,
mxArray *pargout [ ],
int nargin,
const mxArray *pargin [ ]
)
{
mexPrintf ("usage:\n%s\n", USAGE) ;
GxB_init (GrB_NONBLOCKING, mxMalloc, NULL, NULL, mxFree) ;
// mxMalloc, mxCalloc, mxRealloc, and mxFree are not thread safe
GB_Global_malloc_is_thread_safe_set (false) ;
GB_Global_abort_function_set (GB_mx_abort) ;
GB_Global_malloc_tracking_set (true) ;
// built-in default is by column
GxB_Global_Option_set_(GxB_FORMAT, GxB_BY_COL) ;
int nthreads ;
GxB_Global_Option_get_(GxB_NTHREADS, &nthreads) ;
pargout [0] = mxCreateDoubleScalar (nthreads) ;
GxB_Format_Value format ;
GxB_Global_Option_get_(GxB_FORMAT, &format) ;
pargout [1] = mxCreateDoubleScalar (format) ;
double hyper_switch ;
GxB_Global_Option_get_(GxB_HYPER_SWITCH, &hyper_switch) ;
pargout [2] = mxCreateDoubleScalar (hyper_switch) ;
char *name ;
GxB_Global_Option_get_(GxB_LIBRARY_NAME, &name) ;
pargout [3] = mxCreateString (name) ;
int version [3] ;
GxB_Global_Option_get_(GxB_LIBRARY_VERSION, version) ;
pargout [4] = mxCreateDoubleMatrix (1, 3, mxREAL) ;
double *p = mxGetPr (pargout [4]) ;
p [0] = version [0] ;
p [1] = version [1] ;
p [2] = version [2] ;
char *date ;
GxB_Global_Option_get_(GxB_LIBRARY_DATE, &date) ;
pargout [5] = mxCreateString (date) ;
char *about ;
GxB_Global_Option_get_(GxB_LIBRARY_ABOUT, &about) ;
pargout [6] = mxCreateString (about) ;
char *license ;
GxB_Global_Option_get_(GxB_LIBRARY_LICENSE, &license) ;
pargout [7] = mxCreateString (license) ;
char *compile_date ;
GxB_Global_Option_get_(GxB_LIBRARY_COMPILE_DATE, &compile_date) ;
pargout [8] = mxCreateString (compile_date) ;
char *compile_time ;
GxB_Global_Option_get_(GxB_LIBRARY_COMPILE_TIME, &compile_time) ;
pargout [9] = mxCreateString (compile_time) ;
int api [3] ;
GxB_Global_Option_get_(GxB_API_VERSION, api) ;
pargout [10] = mxCreateDoubleMatrix (1, 3, mxREAL) ;
double *a = mxGetPr (pargout [10]) ;
a [0] = api [0] ;
a [1] = api [1] ;
a [2] = api [2] ;
char *api_about ;
GxB_Global_Option_get_(GxB_API_ABOUT, &api_about) ;
pargout [11] = mxCreateString (api_about) ;
double chunk ;
GxB_Global_Option_get_(GxB_CHUNK, &chunk) ;
pargout [12] = mxCreateDoubleScalar (chunk) ;
double bitmap_switch [GxB_NBITMAP_SWITCH] ;
GxB_Global_Option_get_(GxB_BITMAP_SWITCH, bitmap_switch) ;
pargout [13] = mxCreateDoubleMatrix (1, GxB_NBITMAP_SWITCH, mxREAL) ;
double *bswitch = mxGetPr (pargout [13]) ;
for (int k = 0 ; k < GxB_NBITMAP_SWITCH ; k++)
{
bswitch [k] = bitmap_switch [k] ;
}
for (int k = 0 ; k < GxB_NBITMAP_SWITCH ; k++)
{
printf ("bitmap_switch [%d] = %g ", k, bswitch [k]) ;
if (k == 0)
{
printf ("for vectors and matrices with 1 row or column\n") ;
}
else if (k == GxB_NBITMAP_SWITCH - 1)
{
printf ("for matrices with min dimension > %d\n", 1 << (k-1)) ;
}
else
{
printf ("for matrices with min dimension %d to %d\n",
(1 << (k-1)) + 1, 1 << k) ;
}
}
// #include "GB_Test_init_mkl_template.c"
GrB_finalize ( ) ;
}
|