1 
2 // --- General options ---------------------------------------------------------
3 
4 // Determines whether to enable various segments of code identified as
5 // providing non-critical functionality.
6 #define FLA_ENABLE_NON_CRITICAL_CODE
7 
8 // Determines whether the LAPACK compatibility layer is included in libflame.
9 // NOTE: If lapack2flame is enabled, external-lapack-for-subproblems MUST
10 // be disabled!
11 //#define FLA_ENABLE_LAPACK2FLAME
12 
13 // Determines whether to enable external LAPACK for small subproblems.
14 // NOTE: If external-lapack-for-subproblems is enabled, (a) lapack2flame MUST
15 // be disabled, AND (b) external-lapack-interfaces MUST be enabled.
16 //#define FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
17 
18 // Determines whether to enable interfaces to external LAPACK routines.
19 // NOTE: If external-lapack-interfaces is enabled, an LAPACK library will be
20 // required at link-time.
21 //#define FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
22 
23 // Determines whether to use control trees to select a reasonable FLAME
24 // variant and blocksize when level-3 BLAS front-ends are invoked.
25 #define FLA_ENABLE_BLAS3_FRONT_END_CNTL_TREES
26 
27 // Determines whether to modify various segments of code needed for
28 // integrating libflame into Windows.
29 #define FLA_ENABLE_WINDOWS_BUILD
30 
31 // Determines whether to define a portable FLA_Clock() in terms of
32 // gettimeofday() from time.h.
33 #define FLA_ENABLE_PORTABLE_TIMER
34 
35 
36 // --- Runtime error checking and debugging ------------------------------------
37 
38 // Determines whether to enable internal runtime consistency checks of
39 // function parameters and return values.
40 #define FLA_ENABLE_INTERNAL_ERROR_CHECKING
41 
42 // Encodes the default level of internal error checking chosen at
43 // configure-time.
44 #define FLA_INTERNAL_ERROR_CHECKING_LEVEL 2   // full error checking
45 //#define FLA_INTERNAL_ERROR_CHECKING_LEVEL 1   // minimal error checking
46 //#define FLA_INTERNAL_ERROR_CHECKING_LEVEL 0   // no error checking
47 
48 // Determines whether to enable the FLA_malloc()/FLA_free() memory counter
49 // by default.
50 #define FLA_ENABLE_MEMORY_LEAK_COUNTER
51 
52 
53 // --- Multithreading and SuperMatrix ------------------------------------------
54 
55 // Determines whether thread-specific blocks of code should be compiled.
56 #define FLA_ENABLE_MULTITHREADING
57 
58 // Encodes the type of multithreading chosen at configure-time.
59 #define FLA_MULTITHREADING_MODEL 1   // OpenMP
60 // #define FLA_MULTITHREADING_MODEL 2   // POSIX threads
61 
62 // Determines whether SuperMatrix-specific blocks of code should be compiled.
63 #define FLA_ENABLE_SUPERMATRIX
64 
65 
66 // --- BLAS and blocksizes -----------------------------------------------------
67 
68 // Determines whether to enable CBLAS interfaces instead of Fortran-77
69 // interfaces to the BLAS.
70 // #define FLA_ENABLE_CBLAS_INTERFACES
71 
72 // Determines whether to enable interfaces to internal/low-level libgoto
73 // symbols.
74 // #define FLA_ENABLE_GOTO_INTERFACES
75 
76 // Sets the default blocksize in the k dimension (used only if
77 // libgoto interfaces are disabled).
78 // #define FLA_DEFAULT_K_BLOCKSIZE 128
79 
80 // Sets the default blocksize in the m dimension (used only if
81 // libgoto interfaces are disabled).
82 // #define FLA_DEFAULT_M_BLOCKSIZE 128
83 
84 // Sets the default blocksize in the n dimension (used only if
85 // libgoto interfaces are disabled).
86 // #define FLA_DEFAULT_N_BLOCKSIZE 128
87 
88 
89 // --- Memory alignment --------------------------------------------------------
90 
91 // Determines whether memory is aligned to user-requested boundaries.
92 // #define FLA_ENABLE_MEMORY_ALIGNMENT
93 
94 // Sets the byte boundary used to align the starting address of all memory
95 // allocated dynamically through libflame. Only used if
96 // FLA_ENABLE_MEMORY_ALIGNMENT is defined.
97 // #define FLA_MEMORY_ALIGNMENT_BOUNDARY 8
98 
99 // Determines whether to enable code that will increase FLA_Obj leading
100 // dimensions to ensure that matrix columns adhere to the alignment specified
101 // by FLA_MEMORY_ALIGNMENT_BOUNDARY.
102 // #define FLA_ENABLE_LDIM_ALIGNMENT
103 
104 
105 // --- Fortran-77 compatibility ------------------------------------------------
106 
107 // Determines whether the Fortran name-mangling suffix was determined at
108 // configure-time. This option is not used in Windows.
109 // #define FLA_ENABLE_AUTODETECT_F77_UNDERSCORING
110 
111 // Determines whether the Fortran 77 compiler appends an underscore to symbol
112 // names. Not used in Windows.
113 // #define FLA_F77_UNDERSCORE
114 
115 // Determines whether the Fortran 77 compiler appends an extra underscore to
116 // symbol names that already contain at least one underscore. Not used in
117 // Windows.
118 // #define FLA_F77_EXTRA_UNDERSCORE
119 
120 // Determines whether invocations to the BLAS within libflame are converted to
121 // uppercase symbols.
122 #define FLA_ENABLE_UPPERCASE_BLAS
123 
124 // Determines whether invocations to LAPACK within libflame are converted to
125 // uppercase symbols.
126 #define FLA_ENABLE_UPPERCASE_LAPACK
127 
128 
129 // --- Experimental/unsupported/broken options ---------------------------------
130 
131 // Determines whether GPU-specific blocks of code should be compiled.
132 // #define FLA_ENABLE_GPU
133 
134