cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cpu.h
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2022 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 
4 #ifndef CPU_H_
5 #define CPU_H_
6 
9 /* disable conditional expressions is constant */
10 #ifdef _MSC_VER
11 #pragma warning( disable : 4127 )
12 #endif
13 
14 #define UNUSED /*@unused@*/
15 #ifdef __GNUC__
16 #undef UNUSED
17 #define UNUSED __attribute__ ((unused)) /*@unused@*/
18 #endif
19 
21 #ifndef INT16_MAX
22 # define INT16_MAX 32767
23 #endif
24 #ifndef INT16_MIN
25 # define INT16_MIN (-INT16_MAX - 1)
26 #endif
27 
28 #if SHRT_MAX == INT16_MAX
29  typedef short int int16;
30 #elif INT_MAX == INT16_MAX
31  typedef int int16;
32 #else
33 # error failed to define int16, please report this to gary@pa.uky.edu
34 #endif
35 
36 #ifndef UINT16_MAX
37 # define UINT16_MAX 65535
38 #endif
39 
40 #if USHRT_MAX == UINT16_MAX
41  typedef unsigned short int uint16;
42 #elif UINT_MAX == UINT16_MAX
43  typedef unsigned int uint16;
44 #else
45 # error failed to define uint16, please report this to gary@pa.uky.edu
46 #endif
47 
48 #ifndef INT32_MAX
49 # define INT32_MAX 2147483647L
50 #endif
51 #ifndef INT32_MIN
52 # define INT32_MIN (-INT32_MAX - 1)
53 #endif
54 
55 #if INT_MAX == INT32_MAX
56  typedef int int32;
57 #elif LONG_MAX == INT32_MAX
58  typedef long int int32;
59 #else
60 # error failed to define int32, please report this to gary@pa.uky.edu
61 #endif
62 
63 #ifndef UINT32_MAX
64 # define UINT32_MAX 4294967295UL
65 #endif
66 
67 #if UINT_MAX == UINT32_MAX
68  typedef unsigned int uint32;
69 #elif ULONG_MAX == UINT32_MAX
70  typedef unsigned long int uint32;
71 #else
72 # error failed to define uint32, please report this to gary@pa.uky.edu
73 #endif
74 
75 #if LONG_MAX > INT32_MAX
76 
77 /* this will only be defined on LP64 systems
78  * ILP32 systems may have long long support, but that is not
79  * part of the ISO/ANSI standard, so we don't use it here... */
80 
81 /* INT64_MAX, etc, may be defined as long long, so avoid system definitions! */
82 
83 # undef INT64_MAX
84 # define INT64_MAX 9223372036854775807L
85 
86 # undef INT64_MIN
87 # define INT64_MIN (-INT64_MAX - 1L)
88 
89 # if LONG_MAX == INT64_MAX
90 # define HAVE_INT64 1
91  typedef long int int64;
92 # define INT64_LIT(X) X##L
93 # endif
94 
95 #endif
96 
97 #if defined(HAVE_LONG_LONG) && !defined(HAVE_INT64)
98 
99 /* this is fallback for 32-bit systems */
100 # if LLONG_MAX > INT32_MAX
101 
102 # undef INT64_MAX
103 # define INT64_MAX 9223372036854775807LL
104 
105 # undef INT64_MIN
106 # define INT64_MIN (-INT64_MAX - 1LL)
107 
108 # if LLONG_MAX == INT64_MAX
109 # define HAVE_INT64 1
110  typedef long long int int64;
111 # define INT64_LIT(X) X##LL
112 # endif
113 
114 # endif
115 
116 #endif
117 
118 #if ULONG_MAX > UINT32_MAX
119 
120 # undef UINT64_MAX
121 # define UINT64_MAX 18446744073709551615UL
122 
123 # if ULONG_MAX == UINT64_MAX
124 # define HAVE_UINT64 1
125  typedef unsigned long int uint64;
126 # define UINT64_LIT(X) X##UL
127 # endif
128 
129 #endif
130 
131 #if defined(HAVE_LONG_LONG) && !defined(HAVE_UINT64)
132 
133 /* this is fallback for 32-bit systems */
134 # if ULLONG_MAX > UINT32_MAX
135 
136 # undef UINT64_MAX
137 # define UINT64_MAX 18446744073709551615ULL
138 
139 # if ULLONG_MAX == UINT64_MAX
140 # define HAVE_UINT64 1
141  typedef unsigned long long int uint64;
142 # define UINT64_LIT(X) X##ULL
143 # endif
144 
145 # endif
146 
147 #endif
148 
149 #ifdef __AVX__
150 # ifdef __AVX512F__
151 # define CD_ALIGN 64
152 # else
153 # define CD_ALIGN 32
154 # endif
155 #else
156 # define CD_ALIGN 16
157 #endif
158 
180 #ifdef cray
181 #ifndef __cray
182 #define __cray 1
183 #endif
184 #endif
185 
187 #ifdef __x86_64
188 #ifndef __amd64
189 #define __amd64 1
190 #endif
191 #endif
192 
193 #if defined(_ARCH_PPC) || defined(__POWERPC__) || defined(__powerpc__) || defined(PPC)
194 #ifndef __ppc__
195 #define __ppc__ 1
196 #endif
197 #endif
198 
204 #if defined(unix) || defined(__unix__)
205 #ifndef __unix
206 #define __unix 1
207 #endif
208 #endif
209 
211 #if defined(linux) || defined(__linux)
212 #ifndef __linux__
213 #define __linux__ 1
214 #endif
215 #endif
216 
218 #ifdef __ECC
219 #ifndef __ICC
220 #define __ICC __ECC
221 #endif
222 #endif
223 
225 #undef __GNUC_EXCL__
226 #if defined(__GNUC__) && ! ( defined(__ICC) || defined(__PATHSCALE__) || defined(__OPENCC__) || defined(__clang__) )
227 #define __GNUC_EXCL__ 1
228 #endif
229 
230 /* make sure __func__ is defined, this can be removed once C++11 is in effect */
231 #ifndef HAVE_FUNC
232 # undef __func__
233 # ifdef __FUNCTION__
234 # define __func__ __FUNCTION__
235 # else
236 # define __func__ DEBUG_ENTRY.name()
237 # endif
238 #endif
239 
240 /* safe, small, numbers for the float and double */
243 /*FLT_MAX is 3.40e38 on wintel, so BIGFLOAT is 3.40e36 */
247 
249 const double BIGDOUBLE = DBL_MAX/100.;
250 const double SMALLDOUBLE = DBL_MIN*100.;
251 
252 const int STDLEN = 32;
253 
264 
265 // the C++ openmodes below give the exact equivalent of the C modes "r", "w", "a", etc.
266 // the "+" sign in the C mode has been replaced by "p", so, e.g., mode_rpb is equivalent to "r+b"
267 const ios_base::openmode mode_r = ios_base::in;
268 const ios_base::openmode mode_w = ios_base::out | ios_base::trunc;
269 const ios_base::openmode mode_a = ios_base::out | ios_base::app;
270 const ios_base::openmode mode_rp = ios_base::in | ios_base::out;
271 const ios_base::openmode mode_wp = ios_base::in | ios_base::out | ios_base::trunc;
272 const ios_base::openmode mode_ap = ios_base::in | ios_base::out | ios_base::app;
273 
274 const ios_base::openmode UNUSED mode_rb = mode_r | ios_base::binary;
275 const ios_base::openmode UNUSED mode_wb = mode_w | ios_base::binary;
276 const ios_base::openmode UNUSED mode_ab = mode_a | ios_base::binary;
277 const ios_base::openmode UNUSED mode_rpb = mode_rp | ios_base::binary;
278 const ios_base::openmode UNUSED mode_wpb = mode_wp | ios_base::binary;
279 const ios_base::openmode UNUSED mode_apb = mode_ap | ios_base::binary;
280 
281 #include "mpi_utilities.h"
282 
283 FILE* open_data( const char* fname, const char* mode, access_scheme scheme=AS_DEFAULT );
284 void open_data( fstream& stream, const char* fname, ios_base::openmode mode, access_scheme scheme=AS_DEFAULT );
285 MPI_File open_data( const char* fname, int mode, access_scheme scheme=AS_DEFAULT );
286 void check_data( const char* fpath, const char* fname );
287 
288 /* this class is deliberately kept global so that the constructor is executed before
289  * any of the user code; this assures a correct FP environment right from the start */
290 class t_cpu_i
291 {
294  union
295  {
296  char c[4];
297  int32 i;
298  } endian;
299 
301  double test_double;
302 
304 # ifdef HAVE_INT64
305  int64 Double_SNaN_Value;
306 # else
308 # endif
309 
310 # ifdef __unix
311  struct sigaction p_action;
312  struct sigaction p_default;
313 # endif
314 
317 
321  long n_use_CPU;
323  bool p_lgMPI;
330  long n_rank;
334  vector<string> chSearchPath;
342  map<string,string> md5sum_expct;
343 
344  void enable_traps() const;
345  static void signal_handler(int sig);
346 
347  vector<string> p_exit_status;
348 
349  void getPathList( const char* fname, vector<string>& PathList, access_scheme scheme, bool lgRead ) const;
350  void getMD5sums( const char* fname );
351 public:
352  t_cpu_i();
353 
354  bool big_endian() const { return ( endian.i == 0x12345678 ); }
355  bool little_endian() const { return ( endian.i == 0x78563412 ); }
356 
357  sys_float min_float() const { return test_float; }
358  double min_double() const { return test_double; }
359 
360 # ifdef __unix
361  const struct sigaction* action() const { return &p_action; }
362  const struct sigaction* deflt() const { return &p_default; }
363 # endif
364 
365  void set_signal_handlers();
366 
367  void setAssertAbort(bool val)
368  {
369  p_lgAssertAbort = val;
370 #ifdef CATCH_SIGNAL
371 # ifdef __unix
372  if( val )
373  sigaction( SIGABRT, deflt(), NULL );
374  else
375  sigaction( SIGABRT, action(), NULL );
376 # endif
377 # ifdef _MSC_VER
378  if( val )
379  signal( SIGABRT, SIG_DFL );
380  else
381  signal( SIGABRT, &signal_handler );
382 # endif
383 #endif
384  }
385  bool lgAssertAbort() const { return p_lgAssertAbort; }
386 
387  void set_nCPU(long n) { n_avail_CPU = n; }
388  long nCPU() const { return n_avail_CPU; }
389  void set_used_nCPU(long n) { n_use_CPU = n; }
390  long used_nCPU() const { return n_use_CPU; }
391  bool lgMPI() const { return p_lgMPI; }
392  void set_MPISingleRankMode( bool mode ) { p_lgMPISingleRankMode = mode; }
394  void set_nRANK(long n) { n_rank = n; }
395  long nRANK() const { return n_rank; }
396  bool lgMaster() const { return ( n_rank == 0 ); }
397  bool lgMPI_talk() const { return lgMaster() || lgMPISingleRankMode(); }
398  const char *host_name() const { return HostName; }
399  void printDataPath() const;
400  char chDirSeparator() const { return p_chDirSeparator; }
401  bool firstOpen() const { return ( nFileDone == 0 ); }
402  bool foundMD5Mismatch() const { return ( nMD5Mismatch > 0 ); }
403  const string& chExitStatus(exit_type s) const { return p_exit_status[s]; }
404 
405  friend FILE* open_data( const char* fname, const char* mode, access_scheme scheme );
406  friend void open_data( fstream& stream, const char* fname, ios_base::openmode mode, access_scheme scheme );
407  friend MPI_File open_data( const char* fname, int mode, access_scheme scheme );
408  friend void check_data( const char* fpath, const char* fname );
409 
410  friend void set_NaN(sys_float &x);
411  friend void set_NaN(sys_float x[], long n);
412  friend void set_NaN(double &x);
413  friend void set_NaN(double x[], long n);
414 };
415 class t_cpu
416 {
417  static t_cpu_i *m_i;
418 public:
420  {
421  return *m_i;
422  }
423  t_cpu();
424  ~t_cpu();
425 };
426 // Generate a (static) instance of this variable in *every* file.
427 static t_cpu cpu;
428 
429 // The static (class) pointer is set in the first of these. Obviously
430 // this is not thread safe...
431 
432 // Better engineered variants are available in Alexandrescu's book;
433 // better yet to reduce the number of globals and file-statics so
434 // this can just be initialized at the start of main().
435 
437 void set_NaN(sys_float &x);
438 void set_NaN(sys_float x[], /* x[n] */
439  long n);
440 void set_NaN(double &x);
441 void set_NaN(double x[], /* x[n] */
442  long n);
443 
445 bool MyIsnan(const sys_float &x);
446 bool MyIsnan(const double &x);
447 
448 /* Apply compiler directive saying that current routine does not
449  return as modifier, as in "NORETURN void MyExit() { ... }" */
450 #ifdef _MSC_VER
451 #define NORETURN __declspec(noreturn) /*@noreturn@*/
452 #elif defined(__GNUC__) || ( defined(__INTEL_COMPILER) && defined(__linux__) )
453 #define NORETURN __attribute__ ((noreturn)) /*@noreturn@*/
454 #else
455 #define NORETURN /*@noreturn@*/
456 #endif
457 
458 #define FALLTHROUGH (void)0
459 #ifdef __GNUC_EXCL__
460 #if (__GNUC__ >= 7)
461 #undef FALLTHROUGH
462 #define FALLTHROUGH __attribute__ ((fallthrough))
463 #endif
464 #endif
465 
466 #ifdef _MSC_VER
467 #define ALIGNED(X) __declspec(align(X))
468 #else
469 #define ALIGNED(X) __attribute__ ((aligned(X)))
470 #endif
471 
472 #define RESTRICT
473 #define UNLIKELY(x) (x)
474 #ifdef __GNUC__
475 #if (__GNUC__ >= 3)
476 #undef UNLIKELY
477 #define UNLIKELY(x) __builtin_expect((x),0)
478 #endif
479 #undef RESTRICT
480 #define RESTRICT __restrict
481 #else
482 #endif
483 
484 /* Some hackery needed to test if a preprocessor macro is empty. Use as follows:
485  * #if EXPAND(SOME_DODGY_MACRO) == 1
486  * get here if SOME_DODGY_MACRO expands to empty string
487  * #endif */
488 #define DO_EXPAND(VAL) VAL ## 1
489 #define EXPAND(VAL) DO_EXPAND(VAL)
490 
491 /* Define __COMP and __COMP_VER macros for all systems */
492 /* the Intel compiler */
493 /* this needs to be before g++ since icc also sets __GNUC__ */
494 #if defined __INTEL_COMPILER
495 # define __COMP "icc"
496 # define __COMP_VER __INTEL_COMPILER
497 
498 /* PathScale EKOPath compiler */
499 /* this needs to be before g++ since pathCC also sets __GNUC__ */
500 #elif defined __PATHSCALE__
501 # define __COMP "pathCC"
502 # define __COMP_VER __PATHCC__ * 100 + __PATHCC_MINOR__ * 10 + __PATHCC_PATCHLEVEL__
503 
504 /* Open64 compiler */
505 /* this needs to be before g++ since openCC also sets __GNUC__ */
506 #elif defined __OPENCC__
507 # define __COMP "Open64"
508 # if EXPAND(__OPENCC_PATCHLEVEL__) == 1
509 # define __COMP_VER __OPENCC__ * 100 + __OPENCC_MINOR__ * 10
510 # else
511 # define __COMP_VER __OPENCC__ * 100 + __OPENCC_MINOR__ * 10 + __OPENCC_PATCHLEVEL__
512 # endif
513 
514 /* LLVM clang++ */
515 /* this needs to be before g++ since clang++ also sets __GNUC__ */
516 #elif defined __clang__
517 # define __COMP "clang++"
518 # define __COMP_VER __clang_major__ * 100 + __clang_minor__ * 10 + __clang_patchlevel__
519 
520 /* g++ */
521 #elif defined __GNUC__
522 # define __COMP "g++"
523 # if defined(__GNUC_PATCHLEVEL__)
524 # define __COMP_VER (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
525 # else
526 # define __COMP_VER (__GNUC__ * 10000 + __GNUC_MINOR__ * 100)
527 # endif
528 
529 #elif defined __PGI
530 # define __COMP "Portland Group"
531 # if defined(__PGIC__)
532 # define __COMP_VER (__PGIC__ * 100 + __PGIC_MINOR__ * 10 + __PGIC_PATCHLEVEL__)
533 # else
534 # define __COMP_VER 0
535 # endif
536 
537 /* SGI MIPSpro */
538 /* this needs to be after g++, since g++ under IRIX also sets _COMPILER_VERSION */
539 #elif defined(__sgi) && defined(_COMPILER_VERSION)
540 # define __COMP "MIPSpro"
541 # define __COMP_VER _COMPILER_VERSION
542 
543 /* HP */
544 #elif defined __HP_aCC
545 # define __COMP "HP aCC"
546 # define __COMP_VER __HP_aCC
547 
548 /* DEC - this one may be broken for C++, no way to test it... */
549 #elif defined __DECC
550 # define __COMP "DEC CC"
551 # define __COMP_VER __DECC_VER
552 
553 /* MS VS */
554 #elif defined _MSC_VER
555 # define __COMP "vs"
556 # define __COMP_VER _MSC_VER
557 
558 /* Oracle Solaris Studio */
559 #elif defined __SUNPRO_CC
560 # define __COMP "Solaris Studio"
561 # define __COMP_VER __SUNPRO_CC
562 
563 /* unknown */
564 #else
565 # define __COMP "unknown"
566 # define __COMP_VER 0
567 #endif
568 
569 /* ---------------------------- OS ---------------------------- */
570 /* linux */
571 #if defined __linux__
572 # if defined __i386
573 # define __OS "Linux (IA32)"
574 # elif defined __amd64
575 # define __OS "Linux (AMD64)"
576 # elif defined __ia64
577 # define __OS "Linux (IA64)"
578 # elif defined __ppc__
579 # define __OS "Linux (PowerPC)"
580 # else
581 # define __OS "Linux (other)"
582 # endif
583 
584 /* macintosh */
585 #elif defined macintosh
586 # define __OS "Mac OS 9"
587 
588 /* macintosh */
589 #elif defined __MACOSX__
590 # define __OS "Mac OS X"
591 
592 /* apple mac, ... */
593 #elif defined __APPLE__
594 # define __OS "Apple MacOS"
595 
596 /* HP */
597 #elif defined hpux
598 # define __OS "HP-UX"
599 
600 /* Oracle Solaris */
601 #elif defined __sun
602 # define __OS "Solaris"
603 
604 /* IBM AIX */
605 #elif defined _AIX
606 # define __OS "AIX"
607 
608 /* Compaq alpha */
609 #elif defined ultrix
610 # define __OS "Ultrix"
611 
612 /* the BSD variants */
613 #elif defined __FreeBSD__
614 # define __OS "FreeBSD"
615 
616 #elif defined __NetBSD__
617 # define __OS "NetBSD"
618 
619 #elif defined __OpenBSD__
620 # define __OS "OpenBSD"
621 
622 /* Windows64 */
623 /* this needs to be before _WIN32 since Windows64 also sets _WIN32 */
624 #elif defined _WIN64
625 # define __OS "Win64"
626 
627 /* Windows */
628 #elif defined _WIN32
629 # define __OS "Win32"
630 
631 /* Cygwin */
632 #elif defined __CYGWIN__
633 # define __OS "Cygwin"
634 
635 /* SGI */
636 #elif defined __sgi
637 # define __OS "IRIX"
638 
639 /* unknown */
640 #else
641 # define __OS "unknown"
642 #endif
643 
644 /* don't perform this check when we are generating dependencies */
645 #ifndef MM
646 /* bomb out if the compiler is broken.... */
647 # if defined(__GNUC_EXCL__) && ((__GNUC__ == 2 && __GNUC_MINOR__ == 96) || (__GNUC__ == 3 && __GNUC_MINOR__ == 4))
648 # error "This g++ version cannot compile Cloudy and must not be used! Please update g++ to a functional version. See http://wiki.nublado.org/wiki/CompileCode for more details."
649 # endif
650 
651 # if __INTEL_COMPILER >= 1200 && __INTEL_COMPILER < 1300
652 # error "This icc version cannot compile Cloudy and must not be used! Please use a functional version of icc, or g++. See http://wiki.nublado.org/wiki/CompileCode for more details."
653 # endif
654 #endif
655 
656 #ifdef _MSC_VER
657 #pragma warning( default : 4127 )/* disable warning that conditional expression is constant*/
658 #endif
659 
660 #endif /* CPU_H_ */
long nRANK() const
Definition: cpu.h:395
long n_rank
Definition: cpu.h:330
const ios_base::openmode mode_wp
Definition: cpu.h:271
map< string, string > md5sum_expct
Definition: cpu.h:342
FILE * open_data(const char *fname, const char *mode, access_scheme scheme)
Definition: cpu.cpp:765
void set_used_nCPU(long n)
Definition: cpu.h:389
static void signal_handler(int sig)
Definition: cpu.cpp:554
bool p_lgMPISingleRankMode
Definition: cpu.h:328
double test_double
Definition: cpu.h:301
const double BIGDOUBLE
Definition: cpu.h:249
union t_cpu_i::@4 endian
void set_NaN(sys_float &x)
Definition: cpu.cpp:906
friend void set_NaN(sys_float &x)
Definition: cpu.cpp:906
const realnum SMALLFLOAT
Definition: cpu.h:246
t_cpu_i & i()
Definition: cpu.h:419
int32 Double_SNaN_Value[2]
Definition: cpu.h:307
const double SMALLDOUBLE
Definition: cpu.h:250
void getPathList(const char *fname, vector< string > &PathList, access_scheme scheme, bool lgRead) const
Definition: cpu.cpp:574
access_scheme
Definition: cpu.h:262
Definition: cpu.h:290
const ios_base::openmode UNUSED mode_wb
Definition: cpu.h:275
const int STDLEN
Definition: cpu.h:252
static t_cpu_i * m_i
Definition: cpu.h:417
void setAssertAbort(bool val)
Definition: cpu.h:367
long used_nCPU() const
Definition: cpu.h:390
void * MPI_File
Definition: mpi_utilities.h:74
const ios_base::openmode UNUSED mode_rpb
Definition: cpu.h:277
bool big_endian() const
Definition: cpu.h:354
bool MyIsnan(const sys_float &x)
Definition: cpu.cpp:977
void set_nRANK(long n)
Definition: cpu.h:394
double min_double() const
Definition: cpu.h:358
char HostName[STDLEN]
Definition: cpu.h:332
void getMD5sums(const char *fname)
Definition: cpu.cpp:623
exit_type
Definition: cddefines.h:142
bool little_endian() const
Definition: cpu.h:355
~t_cpu()
Definition: cpu.cpp:62
bool lgAssertAbort() const
Definition: cpu.h:385
friend FILE * open_data(const char *fname, const char *mode, access_scheme scheme)
Definition: cpu.cpp:765
long n_avail_CPU
Definition: cpu.h:319
const ios_base::openmode mode_a
Definition: cpu.h:269
const ios_base::openmode mode_r
Definition: cpu.h:267
long n_use_CPU
Definition: cpu.h:321
int nFileDone
Definition: cpu.h:338
float realnum
Definition: cddefines.h:124
float sys_float
Definition: cddefines.h:127
t_cpu_i()
Definition: cpu.cpp:71
const realnum BIGFLOAT
Definition: cpu.h:244
void printDataPath() const
Definition: cpu.cpp:566
bool lgMaster() const
Definition: cpu.h:396
int32 Float_SNaN_Value
Definition: cpu.h:303
long max(int a, long b)
Definition: cddefines.h:817
bool firstOpen() const
Definition: cpu.h:401
bool lgMPI_talk() const
Definition: cpu.h:397
char p_chDirSeparator
Definition: cpu.h:336
long min(int a, long b)
Definition: cddefines.h:762
int nMD5Mismatch
Definition: cpu.h:340
const ios_base::openmode UNUSED mode_wpb
Definition: cpu.h:278
vector< string > p_exit_status
Definition: cpu.h:347
const ios_base::openmode mode_ap
Definition: cpu.h:272
const ios_base::openmode UNUSED mode_rb
Definition: cpu.h:274
const ios_base::openmode mode_w
Definition: cpu.h:268
bool foundMD5Mismatch() const
Definition: cpu.h:402
void check_data(const char *fpath, const char *fname)
Definition: cpu.cpp:878
sys_float min_float() const
Definition: cpu.h:357
void set_signal_handlers()
Definition: cpu.cpp:519
bool lgMPI() const
Definition: cpu.h:391
const ios_base::openmode UNUSED mode_ab
Definition: cpu.h:276
bool p_lgAssertAbort
Definition: cpu.h:316
void set_MPISingleRankMode(bool mode)
Definition: cpu.h:392
void set_nCPU(long n)
Definition: cpu.h:387
char c[4]
Definition: cpu.h:296
Definition: cpu.h:415
const ios_base::openmode UNUSED mode_apb
Definition: cpu.h:279
long nCPU() const
Definition: cpu.h:388
int32 i
Definition: cpu.h:297
void enable_traps() const
Definition: cpu.cpp:340
sys_float test_float
Definition: cpu.h:300
static t_cpu cpu
Definition: cpu.h:427
bool p_lgMPI
Definition: cpu.h:323
vector< string > chSearchPath
Definition: cpu.h:334
const ios_base::openmode mode_rp
Definition: cpu.h:270
t_cpu()
Definition: cpu.cpp:55
char chDirSeparator() const
Definition: cpu.h:400
bool lgMPISingleRankMode() const
Definition: cpu.h:393
const char * host_name() const
Definition: cpu.h:398
friend void check_data(const char *fpath, const char *fname)
Definition: cpu.cpp:878
const string & chExitStatus(exit_type s) const
Definition: cpu.h:403
#define UNUSED
Definition: cpu.h:14