annotate src/DLD-FUNCTIONS/nproc.cc @ 12576:a1e386b9ef4b

Spellcheck documentation for 3.4.1 release.
author Rik <octave@nomad.inbox5.com>
date Mon, 04 Apr 2011 15:56:49 -0700
parents 77b14e634166
children 72c96de7a403
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12510
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
1 /*
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
2
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
3 Copyright (C) 2011 Iain Murray
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
4
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
5 This file is part of Octave.
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
6
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
10 option) any later version.
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
11
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
15 for more details.
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
16
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, see
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
19 <http://www.gnu.org/licenses/>.
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
20
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
21 */
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
22
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
23 #ifdef HAVE_CONFIG_H
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
24 #include <config.h>
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
25 #endif
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
26
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
27 #include "defun-dld.h"
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
28 #include "nproc.h"
12510
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
29
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
30 DEFUN_DLD (nproc, args, nargout,
12510
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
31 "-*- texinfo -*-\n\
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
32 @deftypefn {Loadable Function} {} nproc ()\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
33 @deftypefnx {Loadable Function} {} nproc (@var{query})\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
34 Return the current number of available processors.\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
35 \n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
36 If called with the optional argument @var{query}, modify how processors\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
37 are counted as follows:\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
38 @table @code\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
39 @item all\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
40 total number of processors.\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
41 \n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
42 @item current\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
43 processors available to the current process.\n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
44 \n\
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
45 @item overridable\n\
12576
a1e386b9ef4b Spellcheck documentation for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents: 12512
diff changeset
46 likewise, but overridable through the @w{@env{OMP_NUM_THREADS}} environment\n\
a1e386b9ef4b Spellcheck documentation for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents: 12512
diff changeset
47 variable.\n\
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
48 @end table\n\
12510
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
49 @end deftypefn")
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
50 {
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
51 octave_value retval;
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
52
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
53 int nargin = args.length ();
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
54
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
55 if ((nargin != 0 && nargin != 1) || (nargout != 0 && nargout != 1))
12510
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
56 {
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
57 print_usage ();
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
58 return retval;
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
59 }
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
60
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
61 nproc_query query = NPROC_CURRENT;
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
62 if (nargin == 1)
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
63 {
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
64 std::string arg = args(0).string_value ();
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
65
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
66 std::transform (arg.begin (), arg.end (), arg.begin (), tolower);
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
67
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
68 if (arg == "all")
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
69 query = NPROC_ALL;
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
70 else if (arg == "current")
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
71 query = NPROC_CURRENT;
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
72 else if (arg == "overridable")
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
73 query = NPROC_CURRENT_OVERRIDABLE;
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
74 else
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
75 {
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
76 error ("nproc: invalid value for QUERY");
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
77 return retval;
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
78 }
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
79 }
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
80
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
81 retval = num_processors (query);
12510
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
82
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
83 return retval;
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
84 }
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
85
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
86 /*
12510
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
87
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
88 %% Must always report at least 1 cpu available
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
89 %!assert (nproc () >= 1);
12510
a1b2da4967ac Add nproc, nproc_conf utility functions for determining number of available processors.
Iain Murray <iain@iainmurray.net>
parents:
diff changeset
90
12512
77b14e634166 Replace nprocs with nproc function. Use gnulib module for portability across platforms.
Iain Murray <iain@iainmurray.net>
parents: 12510
diff changeset
91 */