Skip to content

Commit 87d4994

Browse files
authored
Fixed looking-up bogus environment variables (#915)
- Correctly stringize the macro argument instead of relying on wrong behavior. - The parameter_name argument is expanded inside of quotes (GNU toolchain). - Disabled fprettify for macro-definition.
1 parent c0b087b commit 87d4994

File tree

2 files changed

+30
-22
lines changed

2 files changed

+30
-22
lines changed

src/base/dbcsr_base_uses.f90

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@
4949
#define TO_VERSION3(MAJOR, MINOR, UPDATE) (TO_VERSION2(MAJOR, MINOR) + (UPDATE))
5050
#define TO_VERSION TO_VERSION2
5151

52+
! Rely on incorrect expansion inside of quotes to avoid issue of handling hash-character.
53+
!&<
54+
#if defined(__GNUC__)
55+
#define DBCSR_STRINGIZE(A) "A"
56+
#else
57+
#define DBCSR_STRINGIZE(A) #A
58+
#endif
59+
!&>
60+
5261
! LIBXSMM has a FORTRAN-suitable header with macro/version definitions (since v1.8.2).
5362
! Allows macro-toggles (in addition to parameters).
5463
#if defined(__LIBXSMM)

src/core/dbcsr_config.F

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -146,38 +146,37 @@ MODULE dbcsr_config
146146
END TYPE CONF_PAR_REAL
147147

148148
! Convenient macro to define a configuration parameter
149-
#define SET_PARAMETER_DEFAULT(parameter_name, parameter_type, default_val) \
150-
TYPE(parameter_type) :: parameter_name = parameter_type(name="parameter_name", val=default_val, defval=default_val)
149+
#define DBCSR_PARAMETER(N, T, V) TYPE(T) :: N = T(name=DBCSR_STRINGIZE(N), val=V, defval=V)
151150

152151
TYPE dbcsr_config_type
153152
TYPE(CONF_PAR_MM_DRIVER) :: MM_DRIVER = &
154153
CONF_PAR_MM_DRIVER(name="MM_DRIVER", val=mm_default_driver, defval=mm_default_driver)
155154
TYPE(CONF_PAR_INT) :: MM_STACK_SIZE = &
156155
CONF_PAR_INT(name="MM_STACK_SIZE", val=mm_stack_default_size, defval=mm_stack_default_size)
157-
SET_PARAMETER_DEFAULT(AVG_ELEMENTS_IMAGES, CONF_PAR_INT, 0)
158-
SET_PARAMETER_DEFAULT(NUM_MULT_IMAGES, CONF_PAR_INT, 1)
159-
SET_PARAMETER_DEFAULT(N_STACKS, CONF_PAR_INT, 3)
160-
SET_PARAMETER_DEFAULT(USE_MPI_RMA, CONF_PAR_LOGICAL, .FALSE.)
161-
SET_PARAMETER_DEFAULT(NUM_LAYERS_3D, CONF_PAR_INT, 1)
162-
SET_PARAMETER_DEFAULT(USE_COMM_THREAD, CONF_PAR_LOGICAL, .TRUE.)
163-
SET_PARAMETER_DEFAULT(COMM_THREAD_LOAD, CONF_PAR_INT, 100)
164-
SET_PARAMETER_DEFAULT(MM_DENSE, CONF_PAR_LOGICAL, mm_dense_default)
165-
SET_PARAMETER_DEFAULT(MULTREC_LIMIT, CONF_PAR_INT, 512)
166-
SET_PARAMETER_DEFAULT(RUN_ON_GPU, CONF_PAR_LOGICAL, .TRUE.)
167-
SET_PARAMETER_DEFAULT(ACCDRV_THREAD_BUFFERS, CONF_PAR_INT, 8)
156+
DBCSR_PARAMETER(AVG_ELEMENTS_IMAGES, CONF_PAR_INT, 0)
157+
DBCSR_PARAMETER(NUM_MULT_IMAGES, CONF_PAR_INT, 1)
158+
DBCSR_PARAMETER(N_STACKS, CONF_PAR_INT, 3)
159+
DBCSR_PARAMETER(USE_MPI_RMA, CONF_PAR_LOGICAL, .FALSE.)
160+
DBCSR_PARAMETER(NUM_LAYERS_3D, CONF_PAR_INT, 1)
161+
DBCSR_PARAMETER(USE_COMM_THREAD, CONF_PAR_LOGICAL, .TRUE.)
162+
DBCSR_PARAMETER(COMM_THREAD_LOAD, CONF_PAR_INT, 100)
163+
DBCSR_PARAMETER(MM_DENSE, CONF_PAR_LOGICAL, mm_dense_default)
164+
DBCSR_PARAMETER(MULTREC_LIMIT, CONF_PAR_INT, 512)
165+
DBCSR_PARAMETER(RUN_ON_GPU, CONF_PAR_LOGICAL, .TRUE.)
166+
DBCSR_PARAMETER(ACCDRV_THREAD_BUFFERS, CONF_PAR_INT, 8)
168167
TYPE(CONF_PAR_LOGICAL) :: ACCDRV_AVOID_AFTER_BUSY = &
169168
CONF_PAR_LOGICAL(name="ACCDRV_AVOID_AFTER_BUSY", val=.FALSE., defval=.FALSE.)
170-
SET_PARAMETER_DEFAULT(ACCDRV_MIN_FLOP_PROCESS, CONF_PAR_INT, 0)
171-
SET_PARAMETER_DEFAULT(ACCDRV_STACK_SORT, CONF_PAR_LOGICAL, .TRUE.)
172-
SET_PARAMETER_DEFAULT(ACCDRV_MIN_FLOP_SORT, CONF_PAR_INT, 4000)
169+
DBCSR_PARAMETER(ACCDRV_MIN_FLOP_PROCESS, CONF_PAR_INT, 0)
170+
DBCSR_PARAMETER(ACCDRV_STACK_SORT, CONF_PAR_LOGICAL, .TRUE.)
171+
DBCSR_PARAMETER(ACCDRV_MIN_FLOP_SORT, CONF_PAR_INT, 4000)
173172
TYPE(CONF_PAR_LOGICAL) :: ACCDRV_DO_INHOMOGENOUS = &
174173
CONF_PAR_LOGICAL(name="ACCDRV_DO_INHOMOGENOUS", val=.TRUE., defval=.TRUE.)
175-
SET_PARAMETER_DEFAULT(ACCDRV_BINNING_NBINS, CONF_PAR_INT, 4096)
176-
SET_PARAMETER_DEFAULT(ACCDRV_BINNING_BINSIZE, CONF_PAR_INT, 16)
177-
SET_PARAMETER_DEFAULT(USE_MEMPOOLS_CPU, CONF_PAR_LOGICAL, .FALSE.)
178-
SET_PARAMETER_DEFAULT(USE_MPI_ALLOCATOR, CONF_PAR_LOGICAL, .FALSE.)
179-
SET_PARAMETER_DEFAULT(TAS_SPLIT_FACTOR, CONF_PAR_REAL, 1.0_real_8)
180-
SET_PARAMETER_DEFAULT(USE_ACC_G2G, CONF_PAR_LOGICAL, .FALSE.)
174+
DBCSR_PARAMETER(ACCDRV_BINNING_NBINS, CONF_PAR_INT, 4096)
175+
DBCSR_PARAMETER(ACCDRV_BINNING_BINSIZE, CONF_PAR_INT, 16)
176+
DBCSR_PARAMETER(USE_MEMPOOLS_CPU, CONF_PAR_LOGICAL, .FALSE.)
177+
DBCSR_PARAMETER(USE_MPI_ALLOCATOR, CONF_PAR_LOGICAL, .FALSE.)
178+
DBCSR_PARAMETER(TAS_SPLIT_FACTOR, CONF_PAR_REAL, 1.0_real_8)
179+
DBCSR_PARAMETER(USE_ACC_G2G, CONF_PAR_LOGICAL, .FALSE.)
181180
END TYPE dbcsr_config_type
182181

183182
TYPE(dbcsr_config_type), PROTECTED, SAVE :: dbcsr_cfg = dbcsr_config_type() ! defaults

0 commit comments

Comments
 (0)