Eigenvalue SoLvers for Petaflop-Applications (ELPA)  2021.05.001
elpa_index.h
Go to the documentation of this file.
1 /*
2 !
3 ! Copyright 2017, L. Hüdepohl and A. Marek, MPCDF
4 !
5 ! This file is part of ELPA.
6 !
7 ! The ELPA library was originally created by the ELPA consortium,
8 ! consisting of the following organizations:
9 !
10 ! - Max Planck Computing and Data Facility (MPCDF), formerly known as
11 ! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG),
12 ! - Bergische Universität Wuppertal, Lehrstuhl für angewandte
13 ! Informatik,
14 ! - Technische Universität München, Lehrstuhl für Informatik mit
15 ! Schwerpunkt Wissenschaftliches Rechnen ,
16 ! - Fritz-Haber-Institut, Berlin, Abt. Theorie,
17 ! - Max-Plack-Institut für Mathematik in den Naturwissenschaften,
18 ! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition,
19 ! and
20 ! - IBM Deutschland GmbH
21 !
22 ! This particular source code file contains additions, changes and
23 ! enhancements authored by Intel Corporation which is not part of
24 ! the ELPA consortium.
25 !
26 ! More information can be found here:
27 ! http://elpa.mpcdf.mpg.de/
28 !
29 ! ELPA is free software: you can redistribute it and/or modify
30 ! it under the terms of the version 3 of the license of the
31 ! GNU Lesser General Public License as published by the Free
32 ! Software Foundation.
33 !
34 ! ELPA is distributed in the hope that it will be useful,
35 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
36 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37 ! GNU Lesser General Public License for more details.
38 !
39 ! You should have received a copy of the GNU Lesser General Public License
40 ! along with ELPA. If not, see <http://www.gnu.org/licenses/>
41 !
42 ! ELPA reflects a substantial effort on the part of the original
43 ! ELPA consortium, and we ask you to respect the spirit of the
44 ! license that we chose: i.e., please contribute any changes you
45 ! may have back to the original ELPA library distribution, and keep
46 ! any derivatives of ELPA under the same license that we chose for
47 ! the original distribution, the GNU Lesser General Public License.
48 !
49 */
50 #pragma once
51 #include <stdlib.h>
52 #include <stdio.h>
53 #include <string.h>
54 #include <search.h>
55 #include <math.h>
56 
57 #include "config.h"
58 #include <elpa/elpa.h>
59 
60 #define nelements(x) (sizeof(x)/sizeof(x[0]))
61 
62 #define FOR_ALL_TYPES(X) \
63  X(int, "%d", "%d", -1) \
64  X(float, "%g", "%lg", NAN) \
65  X(double, "%g", "%lg", NAN)
66 
67 /* A simple structure for storing values to a pre-set
68  * number of keys */
69 
70 /* Forward declaration of configuration structure */
72 
73 /* Function type for the cardinality */
74 typedef int (*elpa_index_cardinality_t)(elpa_index_t index);
75 
76 /* Function type to enumerate all possible values, starting from 0 */
77 typedef int (*elpa_index_enumerate_int_option_t)(elpa_index_t index, int i);
78 
79 /* Function types to check the validity of a value */
80 typedef int (*elpa_index_valid_int_t)(elpa_index_t index, int n, int new_value);
81 typedef int (*elpa_index_valid_float_t)(elpa_index_t index, int n, float new_value);
82 typedef int (*elpa_index_valid_double_t)(elpa_index_t index, int n, double new_value);
83 
84 /* Function type to give a string representation of a value */
85 typedef const char* (*elpa_index_to_string_int_t)(int n);
86 
87 
88 typedef struct {
89  char *name;
90  char *description;
91  char *env_default;
92  char *env_force;
93  int once;
94  int readonly;
97 
98 
99 typedef struct {
109 
110 
111 typedef struct {
116 
117 
118 typedef struct {
123 
127 };
128 
133 };
134 
136 #define STRUCT_MEMBERS(TYPE, ...) \
137  struct { \
138  TYPE *values; \
139  int *is_set; \
140  int *notified; \
141  } TYPE##_options;
143 };
144 
145 
146 /*
147  !f> interface
148  !f> function elpa_index_instance_c() result(index) bind(C, name="elpa_index_instance")
149  !f> import c_ptr
150  !f> type(c_ptr) :: index
151  !f> end function
152  !f> end interface
153  */
155 
156 
157 /*
158  !f> interface
159  !f> subroutine elpa_index_free_c(index) bind(C, name="elpa_index_free")
160  !f> import c_ptr
161  !f> type(c_ptr), value :: index
162  !f> end subroutine
163  !f> end interface
164  */
165 void elpa_index_free(elpa_index_t index);
166 
167 
168 /*
169  !f> interface
170  !f> function elpa_index_get_int_value_c(index, name, success) result(value) &
171  !f> bind(C, name="elpa_index_get_int_value")
172  !f> import c_ptr, c_int, c_char
173  !f> type(c_ptr), value :: index
174  !f> character(kind=c_char), intent(in) :: name(*)
175  !f>#ifdef USE_FORTRAN2008
176  !f> integer(kind=c_int), optional, intent(out) :: success
177  !f>#else
178  !f> integer(kind=c_int), intent(out) :: success
179  !f>#endif
180  !f> integer(kind=c_int) :: value
181  !f> end function
182  !f> end interface
183  */
184 int elpa_index_get_int_value(elpa_index_t index, char *name, int *success);
185 
186 
187 /*
188  !f> interface
189  !f> function elpa_index_set_int_value_c(index, name, value) result(success) &
190  !f> bind(C, name="elpa_index_set_int_value")
191  !f> import c_ptr, c_int, c_char
192  !f> type(c_ptr), value :: index
193  !f> character(kind=c_char), intent(in) :: name(*)
194  !f> integer(kind=c_int),intent(in), value :: value
195  !f> integer(kind=c_int) :: success
196  !f> end function
197  !f> end interface
198  */
199 int elpa_index_set_int_value(elpa_index_t index, char *name, int value);
200 
201 
202 /*
203  !f> interface
204  !f> function elpa_index_int_value_is_set_c(index, name) result(success) bind(C, name="elpa_index_int_value_is_set")
205  !f> import c_ptr, c_int, c_char
206  !f> type(c_ptr), value :: index
207  !f> character(kind=c_char), intent(in) :: name(*)
208  !f> integer(kind=c_int) :: success
209  !f> end function
210  !f> end interface
211  */
212 int elpa_index_int_value_is_set(elpa_index_t index, char *name);
213 
214 
215 /*
216  !f> interface
217  !f> function elpa_index_get_int_loc_c(index, name) result(loc) bind(C, name="elpa_index_get_int_loc")
218  !f> import c_ptr, c_char
219  !f> type(c_ptr), value :: index
220  !f> character(kind=c_char), intent(in) :: name(*)
221  !f> type(c_ptr) :: loc
222  !f> end function
223  !f> end interface
224  */
225 int* elpa_index_get_int_loc(elpa_index_t index, char *name);
226 
227 
228 /*
229  !f> interface
230  !f> function elpa_index_get_float_value_c(index, name, success) result(value) bind(C, name="elpa_index_get_float_value")
231  !f> import c_ptr, c_int, c_float, c_char
232  !f> type(c_ptr), value :: index
233  !f> character(kind=c_char), intent(in) :: name(*)
234  !f>#ifdef USE_FORTRAN2008
235  !f> integer(kind=c_int), intent(out), optional :: success
236  !f>#else
237  !f> integer(kind=c_int), intent(out) :: success
238  !f>#endif
239  !f> real(kind=c_float) :: value
240  !f> end function
241  !f> end interface
242  */
243 float elpa_index_get_float_value(elpa_index_t index, char *name, int *success);
244 
245 
246 /*
247  !f> interface
248  !f> function elpa_index_set_float_value_c(index, name, value) result(success) &
249  !f> bind(C, name="elpa_index_set_float_value")
250  !f> import c_ptr, c_int, c_float, c_char
251  !f> type(c_ptr), value :: index
252  !f> character(kind=c_char), intent(in) :: name(*)
253  !f> real(kind=c_float),intent(in), value :: value
254  !f> integer(kind=c_int) :: success
255  !f> end function
256  !f> end interface
257  */
258 int elpa_index_set_float_value(elpa_index_t index, char *name, float value);
259 
260 
261 /*
262  !f> interface
263  !f> function elpa_index_float_value_is_set_c(index, name) result(success) &
264  !f> bind(C, name="elpa_index_float_value_is_set")
265  !f> import c_ptr, c_int, c_char
266  !f> type(c_ptr), value :: index
267  !f> character(kind=c_char), intent(in) :: name(*)
268  !f> integer(kind=c_int) :: success
269  !f> end function
270  !f> end interface
271  */
272 int elpa_index_float_value_is_set(elpa_index_t index, char *name);
273 
274 
275 /*
276  !f> interface
277  !f> function elpa_index_get_float_loc_c(index, name) result(loc) bind(C, name="elpa_index_get_float_loc")
278  !f> import c_ptr, c_char
279  !f> type(c_ptr), value :: index
280  !f> character(kind=c_char), intent(in) :: name(*)
281  !f> type(c_ptr) :: loc
282  !f> end function
283  !f> end interface
284  */
285 float* elpa_index_get_float_loc(elpa_index_t index, char *name);
286 
287 
288 /*
289  !f> interface
290  !f> function elpa_index_get_double_value_c(index, name, success) result(value) bind(C, name="elpa_index_get_double_value")
291  !f> import c_ptr, c_int, c_double, c_char
292  !f> type(c_ptr), value :: index
293  !f> character(kind=c_char), intent(in) :: name(*)
294  !f>#ifdef USE_FORTRAN2008
295  !f> integer(kind=c_int), intent(out), optional :: success
296  !f>#else
297  !f> integer(kind=c_int), intent(out) :: success
298  !f>#endif
299  !f> real(kind=c_double) :: value
300  !f> end function
301  !f> end interface
302  */
303 double elpa_index_get_double_value(elpa_index_t index, char *name, int *success);
304 
305 
306 /*
307  !f> interface
308  !f> function elpa_index_set_double_value_c(index, name, value) result(success) &
309  !f> bind(C, name="elpa_index_set_double_value")
310  !f> import c_ptr, c_int, c_double, c_char
311  !f> type(c_ptr), value :: index
312  !f> character(kind=c_char), intent(in) :: name(*)
313  !f> real(kind=c_double),intent(in), value :: value
314  !f> integer(kind=c_int) :: success
315  !f> end function
316  !f> end interface
317  */
318 int elpa_index_set_double_value(elpa_index_t index, char *name, double value);
319 
320 
321 /*
322  !f> interface
323  !f> function elpa_index_double_value_is_set_c(index, name) result(success) &
324  !f> bind(C, name="elpa_index_double_value_is_set")
325  !f> import c_ptr, c_int, c_char
326  !f> type(c_ptr), value :: index
327  !f> character(kind=c_char), intent(in) :: name(*)
328  !f> integer(kind=c_int) :: success
329  !f> end function
330  !f> end interface
331  */
332 int elpa_index_double_value_is_set(elpa_index_t index, char *name);
333 
334 
335 /*
336  !f> interface
337  !f> function elpa_index_get_double_loc_c(index, name) result(loc) bind(C, name="elpa_index_get_double_loc")
338  !f> import c_ptr, c_char
339  !f> type(c_ptr), value :: index
340  !f> character(kind=c_char), intent(in) :: name(*)
341  !f> type(c_ptr) :: loc
342  !f> end function
343  !f> end interface
344  */
345 double* elpa_index_get_double_loc(elpa_index_t index, char *name);
346 
347 
348 /*
349  !f> interface
350  !f> function elpa_index_value_is_set_c(index, name) result(success) bind(C, name="elpa_index_value_is_set")
351  !f> import c_ptr, c_int, c_char
352  !f> type(c_ptr), value :: index
353  !f> character(kind=c_char), intent(in) :: name(*)
354  !f> integer(kind=c_int) :: success
355  !f> end function
356  !f> end interface
357  */
358 int elpa_index_value_is_set(elpa_index_t index, char *name);
359 
360 
361 /*
362  !pf> interface
363  !pf> function elpa_int_value_to_string_c(name, value, string) &
364  !pf> result(error) bind(C, name="elpa_int_value_to_string")
365  !pf> import c_int, c_ptr, c_char
366  !pf> character(kind=c_char), intent(in) :: name(*)
367  !pf> integer(kind=c_int), intent(in), value :: value
368  !pf> type(c_ptr), intent(out) :: string
369  !pf> integer(kind=c_int) :: error
370  !pf> end function
371  !pf> end interface
372  !pf>
373  */
374 int elpa_int_value_to_string(char *name, int value, const char **string);
375 
376 
377 /*
378  !pf> interface
379  !pf> pure function elpa_int_value_to_strlen_c(name, value) &
380  !pf> result(length) bind(C, name="elpa_int_value_to_strlen")
381  !pf> import c_int, c_ptr, c_char
382  !pf> character(kind=c_char), intent(in) :: name(*)
383  !pf> integer(kind=c_int), intent(in), value :: value
384  !pf> integer(kind=c_int) :: length
385  !pf> end function
386  !pf> end interface
387  !pf>
388  */
389 int elpa_int_value_to_strlen(char *name, int value);
390 
391 
392 /*
393  !f> interface
394  !f> pure function elpa_index_int_value_to_strlen_c(index, name) &
395  !f> result(length) bind(C, name="elpa_index_int_value_to_strlen")
396  !f> import c_int, c_ptr, c_char
397  !f> type(c_ptr), intent(in), value :: index
398  !f> character(kind=c_char), intent(in) :: name(*)
399  !f> integer(kind=c_int) :: length
400  !f> end function
401  !f> end interface
402  !f>
403  */
404 int elpa_index_int_value_to_strlen(elpa_index_t index, char *name);
405 
406 
407 /*
408  !f> interface
409  !f> function elpa_int_string_to_value_c(name, string, value) result(error) bind(C, name="elpa_int_string_to_value")
410  !f> import c_int, c_ptr, c_char
411  !f> character(kind=c_char), intent(in) :: name(*)
412  !f> character(kind=c_char), intent(in) :: string(*)
413  !f> integer(kind=c_int), intent(out) :: value
414  !f> integer(kind=c_int) :: error
415  !f> end function
416  !f> end interface
417  !f>
418  */
419 int elpa_int_string_to_value(char *name, char *string, int *value);
420 
421 
422 /*
423  !f> interface
424  !f> function elpa_option_cardinality_c(name) result(n) bind(C, name="elpa_option_cardinality")
425  !f> import c_int, c_char
426  !f> character(kind=c_char), intent(in) :: name(*)
427  !f> integer(kind=c_int) :: n
428  !f> end function
429  !f> end interface
430  !f>
431  */
432 int elpa_option_cardinality(char *name);
433 
434 /*
435  !f> interface
436  !f> function elpa_option_enumerate_c(name, i) result(value) bind(C, name="elpa_option_enumerate")
437  !f> import c_int, c_char
438  !f> character(kind=c_char), intent(in) :: name(*)
439  !f> integer(kind=c_int), intent(in), value :: i
440  !f> integer(kind=c_int) :: value
441  !f> end function
442  !f> end interface
443  !f>
444  */
445 int elpa_option_enumerate(char *name, int i);
446 
447 
448 /*
449  !f> interface
450  !f> function elpa_index_int_is_valid_c(index, name, new_value) result(success) &
451  !f> bind(C, name="elpa_index_int_is_valid")
452  !f> import c_int, c_ptr, c_char
453  !f> type(c_ptr), intent(in), value :: index
454  !f> character(kind=c_char), intent(in) :: name(*)
455  !f> integer(kind=c_int), intent(in), value :: new_value
456  !f> integer(kind=c_int) :: success
457  !f> end function
458  !f> end interface
459  !f>
460  */
461 int elpa_index_int_is_valid(elpa_index_t index, char *name, int new_value);
462 
463 
464 /*
465  !f> interface
466  !f> function elpa_index_autotune_cardinality_c(index, autotune_level, autotune_domain) result(n) &
467  !f> bind(C, name="elpa_index_autotune_cardinality")
468  !f> import c_int, c_ptr, c_char
469  !f> type(c_ptr), intent(in), value :: index
470  !f> integer(kind=c_int), intent(in), value :: autotune_level, autotune_domain
471  !f> integer(kind=c_int) :: n
472  !f> end function
473  !f> end interface
474  !f>
475  */
476 int elpa_index_autotune_cardinality(elpa_index_t index, int autotune_level, int autotune_domain);
477 
478 
479 /*
480  !f> interface
481  !f> function elpa_index_set_autotune_parameters_c(index, autotune_level, autotune_domain, n) result(success) &
482  !f> bind(C, name="elpa_index_set_autotune_parameters")
483  !f> import c_int, c_ptr, c_char
484  !f> type(c_ptr), intent(in), value :: index
485  !f> integer(kind=c_int), intent(in), value :: autotune_level, autotune_domain, n
486  !f> integer(kind=c_int) :: success
487  !f> end function
488  !f> end interface
489  !f>
490  */
491 int elpa_index_set_autotune_parameters(elpa_index_t index, int autotune_level, int autotune_domain, int n);
492 
493 /*
494  !f> interface
495  !f> function elpa_index_print_autotune_parameters_c(index, autotune_level, autotune_domain) result(success) &
496  !f> bind(C, name="elpa_index_print_autotune_parameters")
497  !f> import c_int, c_ptr, c_char
498  !f> type(c_ptr), intent(in), value :: index
499  !f> integer(kind=c_int), intent(in), value :: autotune_level, autotune_domain
500  !f> integer(kind=c_int) :: success
501  !f> end function
502  !f> end interface
503  !f>
504  */
505 int elpa_index_print_autotune_parameters(elpa_index_t index, int autotune_level, int autotune_domain);
506 
507 /*
508  !f> interface
509  !f> function elpa_index_print_settings_c(index, file_name) result(success) &
510  !f> bind(C, name="elpa_index_print_settings")
511  !f> import c_int, c_ptr, c_char
512  !f> type(c_ptr), intent(in), value :: index
513  !f> character(kind=c_char), intent(in) :: file_name(*)
514  !f> integer(kind=c_int) :: success
515  !f> end function
516  !f> end interface
517  !f>
518  */
519 int elpa_index_print_settings(elpa_index_t index, char* filename);
520 
521 /*
522  !f> interface
523  !f> function elpa_index_load_settings_c(index, file_name) result(success) &
524  !f> bind(C, name="elpa_index_load_settings")
525  !f> import c_int, c_ptr, c_char
526  !f> type(c_ptr), intent(in), value :: index
527  !f> character(kind=c_char), intent(in) :: file_name(*)
528  !f> integer(kind=c_int) :: success
529  !f> end function
530  !f> end interface
531  !f>
532  */
533 int elpa_index_load_settings(elpa_index_t index, char* filename);
534 
535 /*
536  !f> interface
537  !f> function elpa_index_print_autotune_state_c(index, autotune_level, autotune_domain, min_loc, &
538  !f> min_val, current, cardinality, file_name) result(success) &
539  !f> bind(C, name="elpa_index_print_autotune_state")
540  !f> import c_int, c_ptr, c_char, c_double
541  !f> type(c_ptr), intent(in), value :: index
542  !f> integer(kind=c_int), intent(in), value :: autotune_level, autotune_domain, min_loc, current, cardinality
543  !f> real(kind=c_double), intent(in), value :: min_val
544  !f> character(kind=c_char), intent(in) :: file_name(*)
545  !f> integer(kind=c_int) :: success
546  !f> end function
547  !f> end interface
548  !f>
549  */
550 int elpa_index_print_autotune_state(elpa_index_t index, int autotune_level, int autotune_domain, int min_loc,
551  double min_val, int current, int cardinality, char* filename);
552 
553 /*
554  !f> interface
555  !f> function elpa_index_load_autotune_state_c(index, autotune_level, autotune_domain, min_loc, &
556  !f> min_val, current, cardinality, file_name) result(success) &
557  !f> bind(C, name="elpa_index_load_autotune_state")
558  !f> import c_int, c_ptr, c_char, c_double
559  !f> type(c_ptr), intent(in), value :: index
560  !f> integer(kind=c_int), intent(in) :: autotune_level, autotune_domain, min_loc, current, cardinality
561  !f> real(kind=c_double), intent(in) :: min_val
562  !f> character(kind=c_char), intent(in) :: file_name(*)
563  !f> integer(kind=c_int) :: success
564  !f> end function
565  !f> end interface
566  !f>
567  */
568 int elpa_index_load_autotune_state(elpa_index_t index, int* autotune_level, int* autotune_domain, int* min_loc,
569  double* min_val, int* current, int* cardinality, char* filename);
570 
int elpa_index_int_value_to_strlen(elpa_index_t index, char *name)
int elpa_index_get_int_value(elpa_index_t index, char *name, int *success)
int elpa_index_is_printing_mpi_rank(elpa_index_t index)
double * elpa_index_get_double_loc(elpa_index_t index, char *name)
int(* elpa_index_enumerate_int_option_t)(elpa_index_t index, int i)
Definition: elpa_index.h:77
int elpa_option_enumerate(char *name, int i)
int(* elpa_index_cardinality_t)(elpa_index_t index)
Definition: elpa_index.h:74
int * elpa_index_get_int_loc(elpa_index_t index, char *name)
elpa_index_t elpa_index_instance()
NOTIFY_FLAGS
Definition: elpa_index.h:124
@ NOTIFY_ENV_FORCE
Definition: elpa_index.h:126
@ NOTIFY_ENV_DEFAULT
Definition: elpa_index.h:125
int elpa_index_load_autotune_state(elpa_index_t index, int *autotune_level, int *autotune_domain, int *min_loc, double *min_val, int *current, int *cardinality, char *filename)
int elpa_index_double_value_is_set(elpa_index_t index, char *name)
int(* elpa_index_valid_float_t)(elpa_index_t index, int n, float new_value)
Definition: elpa_index.h:81
int(* elpa_index_valid_int_t)(elpa_index_t index, int n, int new_value)
Definition: elpa_index.h:80
int elpa_index_load_settings(elpa_index_t index, char *filename)
int elpa_index_print_autotune_parameters(elpa_index_t index, int autotune_level, int autotune_domain)
int elpa_index_autotune_cardinality(elpa_index_t index, int autotune_level, int autotune_domain)
float elpa_index_get_float_value(elpa_index_t index, char *name, int *success)
struct elpa_index_struct * elpa_index_t
Definition: elpa_index.h:71
int elpa_index_int_value_is_set(elpa_index_t index, char *name)
int(* elpa_index_valid_double_t)(elpa_index_t index, int n, double new_value)
Definition: elpa_index.h:82
int elpa_index_value_is_set(elpa_index_t index, char *name)
int elpa_option_cardinality(char *name)
int elpa_index_int_is_valid(elpa_index_t index, char *name, int new_value)
int elpa_index_set_autotune_parameters(elpa_index_t index, int autotune_level, int autotune_domain, int n)
double elpa_index_get_double_value(elpa_index_t index, char *name, int *success)
#define FOR_ALL_TYPES(X)
Definition: elpa_index.h:62
const char *(* elpa_index_to_string_int_t)(int n)
Definition: elpa_index.h:85
int elpa_index_set_int_value(elpa_index_t index, char *name, int value)
int elpa_index_set_float_value(elpa_index_t index, char *name, float value)
void elpa_index_free(elpa_index_t index)
int elpa_int_value_to_strlen(char *name, int value)
float * elpa_index_get_float_loc(elpa_index_t index, char *name)
int elpa_int_string_to_value(char *name, char *string, int *value)
int elpa_int_value_to_string(char *name, int value, const char **string)
int elpa_index_float_value_is_set(elpa_index_t index, char *name)
int elpa_index_set_double_value(elpa_index_t index, char *name, double value)
PRINT_FLAGS
Definition: elpa_index.h:129
@ PRINT_STRUCTURE
Definition: elpa_index.h:130
@ PRINT_YES
Definition: elpa_index.h:131
@ PRINT_NO
Definition: elpa_index.h:132
int elpa_index_print_autotune_state(elpa_index_t index, int autotune_level, int autotune_domain, int min_loc, double min_val, int current, int cardinality, char *filename)
int elpa_index_print_settings(elpa_index_t index, char *filename)
#define STRUCT_MEMBERS(TYPE,...)
Definition: elpa_index.h:136
Definition: elpa_index.h:118
elpa_index_entry_t base
Definition: elpa_index.h:119
double default_value
Definition: elpa_index.h:120
elpa_index_valid_double_t valid
Definition: elpa_index.h:121
Definition: elpa_index.h:88
char * env_default
Definition: elpa_index.h:91
int once
Definition: elpa_index.h:93
char * description
Definition: elpa_index.h:90
int readonly
Definition: elpa_index.h:94
char * env_force
Definition: elpa_index.h:92
int print_flag
Definition: elpa_index.h:95
char * name
Definition: elpa_index.h:89
Definition: elpa_index.h:111
elpa_index_entry_t base
Definition: elpa_index.h:112
elpa_index_valid_float_t valid
Definition: elpa_index.h:114
float default_value
Definition: elpa_index.h:113
Definition: elpa_index.h:99
int default_value
Definition: elpa_index.h:101
int autotune_level
Definition: elpa_index.h:102
int autotune_domain
Definition: elpa_index.h:103
elpa_index_enumerate_int_option_t enumerate
Definition: elpa_index.h:106
elpa_index_valid_int_t valid
Definition: elpa_index.h:104
elpa_index_to_string_int_t to_string
Definition: elpa_index.h:107
elpa_index_cardinality_t cardinality
Definition: elpa_index.h:105
elpa_index_entry_t base
Definition: elpa_index.h:100
Definition: elpa_index.h:135