ScaLAPACK 2.1  2.1
ScaLAPACK: Scalable Linear Algebra PACKage
Bconfig.h
Go to the documentation of this file.
1 /*
2  * This file includes the standard C libraries, as well as system dependant
3  * include files. All BLACS routines include this file.
4  */
5 
6 #ifndef BCONFIG_H
7 #define BCONFIG_H 1
8 
9 /*
10  * Include files
11  */
12 #include <stdlib.h>
13 #include <stdio.h>
14 #include <math.h>
15 #include <stdarg.h>
16 #include <mpi.h>
17 
18 /*
19  * These macros define the naming strategy needed for a fortran
20  * routine to call a C routine, and whether to build so they may be
21  * called from C or fortran. For the fortran call C interface, ADD_ assumes that
22  * fortran calls expect C routines to have an underscore postfixed to the name
23  * (Suns, and the Intel expect this). NOCHANGE indicates that fortran expects
24  * the name called by fortran to be identical to that compiled by C
25  * (AIX does this). UPCASE says it expects C routines called by fortran
26  * to be in all upcase (CRAY wants this). The variable FORTRAN_CALL_C is always
27  * set to one of these values. If the BLACS will be called from C, we define
28  * INTFACE to be CALL_C, otherwise, it is set to FORTRAN_CALL_C.
29  */
30 #define ADD_ 0
31 #define NOCHANGE 1
32 #define UPCASE 2
33 #define FCISF2C 3
34 #define C_CALL 4
35 
36 #ifdef UpCase
37 #define FORTRAN_CALL_C UPCASE
38 #endif
39 
40 #ifdef NoChange
41 #define FORTRAN_CALL_C NOCHANGE
42 #endif
43 
44 #ifdef Add_
45 #define FORTRAN_CALL_C ADD_
46 #endif
47 
48 #ifdef FortranIsF2C
49 #define FORTRAN_CALL_C FCISF2C
50 #endif
51 
52 #ifndef FORTRAN_CALL_C
53 #define FORTRAN_CALL_C ADD_
54 #endif
55 
56 #ifdef CallFromC
57 #define INTFACE C_CALL
58 #else
59 #define INTFACE FORTRAN_CALL_C
60 #endif
61 
62 /*
63  * Uncomment these macro definitions, and substitute the topology of your
64  * choice to vary the default topology (TOP = ' ') for broadcast and combines.
65 #define DefBSTop '1'
66 #define DefCombTop '1'
67  */
68 
69 /*
70  * Uncomment this line if your MPI_Send provides a locally-blocking send
71  */
72 //#define SndIsLocBlk
73 
74 /*
75  * Comment out the following line if your MPI does a data copy on every
76  * non-contiguous send
77  */
78 #define MpiBuffGood
79 
80 /*
81  * If your MPI cannot form data types of zero length, uncomment the
82  * following definition
83  */
84 /* #define ZeroByteTypeBug */
85 
86 /*
87  * These macros set the timing and debug levels for the BLACS. The fastest
88  * code is produced by setting both values to 0. Higher levels provide
89  * more timing/debug information at the cost of performance. Present levels
90  * of debug are:
91  * 0 : No debug information
92  * 1 : Mainly parameter checking.
93  *
94  * Present levels of timing are:
95  * 0 : No timings taken
96  */
97 #ifndef BlacsDebugLvl
98 #define BlacsDebugLvl 0
99 #endif
100 #ifndef BlacsTimingLvl
101 #define BlacsTimingLvl 0
102 #endif
103 
104 #endif