1 //------------------------------------------------------------------------------
2 // gbthreads: get/set the maximum # of threads to use in GraphBLAS
3 //------------------------------------------------------------------------------
4
5 // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
6 // SPDX-License-Identifier: GPL-3.0-or-later
7
8 //------------------------------------------------------------------------------
9
10 // Usage:
11
12 // nthreads = gbthreads
13 // nthreads = gbthreads (nthreads)
14
15 #include "gb_matlab.h"
16
17 #define USAGE "usage: nthreads = GrB.threads ; or GrB.threads (nthreads)"
18
mexFunction(int nargout,mxArray * pargout[],int nargin,const mxArray * pargin[])19 void mexFunction
20 (
21 int nargout,
22 mxArray *pargout [ ],
23 int nargin,
24 const mxArray *pargin [ ]
25 )
26 {
27
28 //--------------------------------------------------------------------------
29 // check inputs
30 //--------------------------------------------------------------------------
31
32 gb_usage (nargin <= 1 && nargout <= 1, USAGE) ;
33
34 //--------------------------------------------------------------------------
35 // set the # of threads, if requested
36 //--------------------------------------------------------------------------
37
38 int nthreads_max ;
39
40 if (nargin > 0)
41 {
42 // set the # of threads
43 CHECK_ERROR (!gb_mxarray_is_scalar (pargin [0]),
44 "input must be a scalar") ;
45 nthreads_max = (int) mxGetScalar (pargin [0]) ;
46 OK (GxB_Global_Option_set (GxB_NTHREADS, nthreads_max)) ;
47 }
48
49 //--------------------------------------------------------------------------
50 // return # of threads
51 //--------------------------------------------------------------------------
52
53 OK (GxB_Global_Option_get (GxB_NTHREADS, &nthreads_max)) ;
54 pargout [0] = mxCreateDoubleScalar (nthreads_max) ;
55 GB_WRAPUP ;
56 }
57
58