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