Eigenvalue SoLvers for Petaflop-Applications (ELPA) 2024.05.001
Loading...
Searching...
No Matches
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 */
75
76/* Function type to enumerate all possible values, starting from 0 */
78
79/* Function types to check the validity of a value */
80typedef int (*elpa_index_valid_int_t)(elpa_index_t index, int n, int new_value);
81typedef int (*elpa_index_valid_float_t)(elpa_index_t index, int n, float new_value);
82typedef 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 */
85typedef const char* (*elpa_index_to_string_int_t)(int n);
86
87
88typedef struct {
89 char *name;
92 char *env_force;
93 int once;
97
98
111
112
118
119
125
130
136
138#define STRUCT_MEMBERS(TYPE, ...) \
139 struct { \
140 TYPE *values; \
141 int *is_set; \
142 int *notified; \
143 } TYPE##_options;
145};
146
147
148/*
149 !f> interface
150 !f> function elpa_index_instance_c() result(index) bind(C, name="elpa_index_instance")
151 !f> import c_ptr
152 !f> type(c_ptr) :: index
153 !f> end function
154 !f> end interface
155 */
157
158
159/*
160 !f> interface
161 !f> subroutine elpa_index_free_c(index) bind(C, name="elpa_index_free")
162 !f> import c_ptr
163 !f> type(c_ptr), value :: index
164 !f> end subroutine
165 !f> end interface
166 */
168
169
170/*
171 !f> interface
172 !f> function elpa_index_get_int_value_c(index, name, success) result(value) &
173 !f> bind(C, name="elpa_index_get_int_value")
174 !f> import c_ptr, c_int, c_char
175 !f> type(c_ptr), value :: index
176 !f> character(kind=c_char), intent(in) :: name(*)
177 !f>#ifdef USE_FORTRAN2008
178 !f> integer(kind=c_int), optional, intent(out) :: success
179 !f>#else
180 !f> integer(kind=c_int), intent(out) :: success
181 !f>#endif
182 !f> integer(kind=c_int) :: value
183 !f> end function
184 !f> end interface
185 */
186int elpa_index_get_int_value(elpa_index_t index, char *name, int *success);
187
188
189/*
190 !f> interface
191 !f> function elpa_index_set_int_value_c(index, name, value) result(success) &
192 !f> bind(C, name="elpa_index_set_int_value")
193 !f> import c_ptr, c_int, c_char
194 !f> type(c_ptr), value :: index
195 !f> character(kind=c_char), intent(in) :: name(*)
196 !f> integer(kind=c_int),intent(in), value :: value
197 !f> integer(kind=c_int) :: success
198 !f> end function
199 !f> end interface
200 */
201int elpa_index_set_int_value(elpa_index_t index, char *name, int value);
202
203
204/*
205 !f> interface
206 !f> function elpa_index_int_value_is_set_c(index, name) result(success) bind(C, name="elpa_index_int_value_is_set")
207 !f> import c_ptr, c_int, c_char
208 !f> type(c_ptr), value :: index
209 !f> character(kind=c_char), intent(in) :: name(*)
210 !f> integer(kind=c_int) :: success
211 !f> end function
212 !f> end interface
213 */
215
216
217/*
218 !f> interface
219 !f> function elpa_index_get_int_loc_c(index, name) result(loc) bind(C, name="elpa_index_get_int_loc")
220 !f> import c_ptr, c_char
221 !f> type(c_ptr), value :: index
222 !f> character(kind=c_char), intent(in) :: name(*)
223 !f> type(c_ptr) :: loc
224 !f> end function
225 !f> end interface
226 */
227int* elpa_index_get_int_loc(elpa_index_t index, char *name);
228
229
230/*
231 !f> interface
232 !f> function elpa_index_get_float_value_c(index, name, success) result(value) bind(C, name="elpa_index_get_float_value")
233 !f> import c_ptr, c_int, c_float, c_char
234 !f> type(c_ptr), value :: index
235 !f> character(kind=c_char), intent(in) :: name(*)
236 !f>#ifdef USE_FORTRAN2008
237 !f> integer(kind=c_int), intent(out), optional :: success
238 !f>#else
239 !f> integer(kind=c_int), intent(out) :: success
240 !f>#endif
241 !f> real(kind=c_float) :: value
242 !f> end function
243 !f> end interface
244 */
245float elpa_index_get_float_value(elpa_index_t index, char *name, int *success);
246
247
248/*
249 !f> interface
250 !f> function elpa_index_set_float_value_c(index, name, value) result(success) &
251 !f> bind(C, name="elpa_index_set_float_value")
252 !f> import c_ptr, c_int, c_float, c_char
253 !f> type(c_ptr), value :: index
254 !f> character(kind=c_char), intent(in) :: name(*)
255 !f> real(kind=c_float),intent(in), value :: value
256 !f> integer(kind=c_int) :: success
257 !f> end function
258 !f> end interface
259 */
260int elpa_index_set_float_value(elpa_index_t index, char *name, float value);
261
262
263/*
264 !f> interface
265 !f> function elpa_index_float_value_is_set_c(index, name) result(success) &
266 !f> bind(C, name="elpa_index_float_value_is_set")
267 !f> import c_ptr, c_int, c_char
268 !f> type(c_ptr), value :: index
269 !f> character(kind=c_char), intent(in) :: name(*)
270 !f> integer(kind=c_int) :: success
271 !f> end function
272 !f> end interface
273 */
275
276
277/*
278 !f> interface
279 !f> function elpa_index_get_float_loc_c(index, name) result(loc) bind(C, name="elpa_index_get_float_loc")
280 !f> import c_ptr, c_char
281 !f> type(c_ptr), value :: index
282 !f> character(kind=c_char), intent(in) :: name(*)
283 !f> type(c_ptr) :: loc
284 !f> end function
285 !f> end interface
286 */
287float* elpa_index_get_float_loc(elpa_index_t index, char *name);
288
289
290/*
291 !f> interface
292 !f> function elpa_index_get_double_value_c(index, name, success) result(value) bind(C, name="elpa_index_get_double_value")
293 !f> import c_ptr, c_int, c_double, c_char
294 !f> type(c_ptr), value :: index
295 !f> character(kind=c_char), intent(in) :: name(*)
296 !f>#ifdef USE_FORTRAN2008
297 !f> integer(kind=c_int), intent(out), optional :: success
298 !f>#else
299 !f> integer(kind=c_int), intent(out) :: success
300 !f>#endif
301 !f> real(kind=c_double) :: value
302 !f> end function
303 !f> end interface
304 */
305double elpa_index_get_double_value(elpa_index_t index, char *name, int *success);
306
307
308/*
309 !f> interface
310 !f> function elpa_index_set_double_value_c(index, name, value) result(success) &
311 !f> bind(C, name="elpa_index_set_double_value")
312 !f> import c_ptr, c_int, c_double, c_char
313 !f> type(c_ptr), value :: index
314 !f> character(kind=c_char), intent(in) :: name(*)
315 !f> real(kind=c_double),intent(in), value :: value
316 !f> integer(kind=c_int) :: success
317 !f> end function
318 !f> end interface
319 */
320int elpa_index_set_double_value(elpa_index_t index, char *name, double value);
321
322
323/*
324 !f> interface
325 !f> function elpa_index_double_value_is_set_c(index, name) result(success) &
326 !f> bind(C, name="elpa_index_double_value_is_set")
327 !f> import c_ptr, c_int, c_char
328 !f> type(c_ptr), value :: index
329 !f> character(kind=c_char), intent(in) :: name(*)
330 !f> integer(kind=c_int) :: success
331 !f> end function
332 !f> end interface
333 */
335
336
337/*
338 !f> interface
339 !f> function elpa_index_get_double_loc_c(index, name) result(loc) bind(C, name="elpa_index_get_double_loc")
340 !f> import c_ptr, c_char
341 !f> type(c_ptr), value :: index
342 !f> character(kind=c_char), intent(in) :: name(*)
343 !f> type(c_ptr) :: loc
344 !f> end function
345 !f> end interface
346 */
347double* elpa_index_get_double_loc(elpa_index_t index, char *name);
348
349
350/*
351 !f> interface
352 !f> function elpa_index_value_is_set_c(index, name) result(success) bind(C, name="elpa_index_value_is_set")
353 !f> import c_ptr, c_int, c_char
354 !f> type(c_ptr), value :: index
355 !f> character(kind=c_char), intent(in) :: name(*)
356 !f> integer(kind=c_int) :: success
357 !f> end function
358 !f> end interface
359 */
361
362
363/*
364 !pf> interface
365 !pf> function elpa_int_value_to_string_c(name, value, string) &
366 !pf> result(error) bind(C, name="elpa_int_value_to_string")
367 !pf> import c_int, c_ptr, c_char
368 !pf> character(kind=c_char), intent(in) :: name(*)
369 !pf> integer(kind=c_int), intent(in), value :: value
370 !pf> type(c_ptr), intent(out) :: string
371 !pf> integer(kind=c_int) :: error
372 !pf> end function
373 !pf> end interface
374 !pf>
375 */
376int elpa_int_value_to_string(char *name, int value, const char **string);
377
378
379/*
380 !pf> interface
381 !pf> pure function elpa_int_value_to_strlen_c(name, value) &
382 !pf> result(length) bind(C, name="elpa_int_value_to_strlen")
383 !pf> import c_int, c_ptr, c_char
384 !pf> character(kind=c_char), intent(in) :: name(*)
385 !pf> integer(kind=c_int), intent(in), value :: value
386 !pf> integer(kind=c_int) :: length
387 !pf> end function
388 !pf> end interface
389 !pf>
390 */
391int elpa_int_value_to_strlen(char *name, int value);
392
393
394/*
395 !f> interface
396 !f> pure function elpa_index_int_value_to_strlen_c(index, name) &
397 !f> result(length) bind(C, name="elpa_index_int_value_to_strlen")
398 !f> import c_int, c_ptr, c_char
399 !f> type(c_ptr), intent(in), value :: index
400 !f> character(kind=c_char), intent(in) :: name(*)
401 !f> integer(kind=c_int) :: length
402 !f> end function
403 !f> end interface
404 !f>
405 */
407
408
409/*
410 !f> interface
411 !f> function elpa_int_string_to_value_c(name, string, value) result(error) bind(C, name="elpa_int_string_to_value")
412 !f> import c_int, c_ptr, c_char
413 !f> character(kind=c_char), intent(in) :: name(*)
414 !f> character(kind=c_char), intent(in) :: string(*)
415 !f> integer(kind=c_int), intent(out) :: value
416 !f> integer(kind=c_int) :: error
417 !f> end function
418 !f> end interface
419 !f>
420 */
421int elpa_int_string_to_value(char *name, char *string, int *value);
422
423
424/*
425 !f> interface
426 !f> function elpa_option_cardinality_c(name) result(n) bind(C, name="elpa_option_cardinality")
427 !f> import c_int, c_char
428 !f> character(kind=c_char), intent(in) :: name(*)
429 !f> integer(kind=c_int) :: n
430 !f> end function
431 !f> end interface
432 !f>
433 */
435
436/*
437 !f> interface
438 !f> function elpa_option_enumerate_c(name, i) result(value) bind(C, name="elpa_option_enumerate")
439 !f> import c_int, c_char
440 !f> character(kind=c_char), intent(in) :: name(*)
441 !f> integer(kind=c_int), intent(in), value :: i
442 !f> integer(kind=c_int) :: value
443 !f> end function
444 !f> end interface
445 !f>
446 */
447int elpa_option_enumerate(char *name, int i);
448
449
450/*
451 !f> interface
452 !f> function elpa_index_int_is_valid_c(index, name, new_value) result(success) &
453 !f> bind(C, name="elpa_index_int_is_valid")
454 !f> import c_int, c_ptr, c_char
455 !f> type(c_ptr), intent(in), value :: index
456 !f> character(kind=c_char), intent(in) :: name(*)
457 !f> integer(kind=c_int), intent(in), value :: new_value
458 !f> integer(kind=c_int) :: success
459 !f> end function
460 !f> end interface
461 !f>
462 */
463int elpa_index_int_is_valid(elpa_index_t index, char *name, int new_value);
464
465
466/*
467 !f> interface
468 !f> function elpa_index_autotune_cardinality_c(index, autotune_level, autotune_domain) result(n) &
469 !f> bind(C, name="elpa_index_autotune_cardinality")
470 !f> import c_int, c_ptr, c_char
471 !f> type(c_ptr), intent(in), value :: index
472 !f> integer(kind=c_int), intent(in), value :: autotune_level, autotune_domain
473 !f> integer(kind=c_int) :: n
474 !f> end function
475 !f> end interface
476 !f>
477 */
478int elpa_index_autotune_cardinality(elpa_index_t index, int autotune_level, int autotune_domain);
479
480
481/*
482 !f> interface
483 !f> function elpa_index_autotune_cardinality_new_stepping_c(index, &
484 !f> autotune_level, &
485 !f> autotune_domain, autotune_part) result(n) &
486 !f> bind(C, name="elpa_index_autotune_cardinality_new_stepping")
487 !f> import c_int, c_ptr, c_char
488 !f> type(c_ptr), intent(in), value :: index
489 !f> integer(kind=c_int), intent(in), value :: autotune_level, &
490 !f> autotune_domain
491 !f> integer(kind=c_int), intent(in), value :: autotune_part
492 !f> integer(kind=c_int) :: n
493 !f> end function
494 !f> end interface
495 !f>
496 */
497int elpa_index_autotune_cardinality_new_stepping(elpa_index_t index, int autotune_level, int autotune_domain, int autotune_part);
498
499
500/*
501 !f> interface
502 !f> function elpa_index_set_autotune_parameters_c(index, autotune_level, autotune_domain, n) result(success) &
503 !f> bind(C, name="elpa_index_set_autotune_parameters")
504 !f> import c_int, c_ptr, c_char
505 !f> type(c_ptr), intent(in), value :: index
506 !f> integer(kind=c_int), intent(in), value :: autotune_level, autotune_domain, n
507 !f> integer(kind=c_int) :: success
508 !f> end function
509 !f> end interface
510 !f>
511 */
512int elpa_index_set_autotune_parameters(elpa_index_t index, int autotune_level, int autotune_domain, int n);
513
514
515/*
516 !f> interface
517 !f> function elpa_index_set_autotune_parameters_new_stepping_c(index, &
518 !f> autotune_level, autotune_domain, autotune_part, n) &
519 !f> result(success) &
520 !f> bind(C, name="elpa_index_set_autotune_parameters_new_stepping")
521 !f> import c_int, c_ptr, c_char
522 !f> type(c_ptr), intent(in), value :: index
523 !f> integer(kind=c_int), intent(in), value :: autotune_level, &
524 !f> autotune_domain, n
525 !f> integer(kind=c_int), intent(in), value :: autotune_part
526 !f> integer(kind=c_int) :: success
527 !f> end function
528 !f> end interface
529 !f>
530 */
531int elpa_index_set_autotune_parameters_new_stepping(elpa_index_t index, int autotune_level, int autotune_domain, int autotune_part, int n);
532
533
534/*
535 !f> interface
536 !f> function elpa_index_print_autotune_parameters_c(index, autotune_level, autotune_domain) result(success) &
537 !f> bind(C, name="elpa_index_print_autotune_parameters")
538 !f> import c_int, c_ptr, c_char
539 !f> type(c_ptr), intent(in), value :: index
540 !f> integer(kind=c_int), intent(in), value :: autotune_level, autotune_domain
541 !f> integer(kind=c_int) :: success
542 !f> end function
543 !f> end interface
544 !f>
545 */
546int elpa_index_print_autotune_parameters(elpa_index_t index, int autotune_level, int autotune_domain);
547
548/*
549 !f> interface
550 !f> function elpa_index_print_autotune_parameters_new_stepping_c(index, &
551 !f> autotune_level, autotune_domain, autotune_part) result(success) &
552 !f> bind(C, name="elpa_index_print_autotune_parameters_new_stepping")
553 !f> import c_int, c_ptr, c_char
554 !f> type(c_ptr), intent(in), value :: index
555 !f> integer(kind=c_int), intent(in), value :: autotune_level, &
556 !f> autotune_domain
557 !f> integer(kind=c_int), intent(in), value :: autotune_part
558 !f> integer(kind=c_int) :: success
559 !f> end function
560 !f> end interface
561 !f>
562 */
563int elpa_index_print_autotune_parameters_new_stepping(elpa_index_t index, int autotune_level, int autotune_domain, int autotune_part);
564
565
566/*
567 !f> interface
568 !f> function elpa_index_print_settings_c(index, file_name) result(success) &
569 !f> bind(C, name="elpa_index_print_settings")
570 !f> import c_int, c_ptr, c_char
571 !f> type(c_ptr), intent(in), value :: index
572 !f> character(kind=c_char), intent(in) :: file_name(*)
573 !f> integer(kind=c_int) :: success
574 !f> end function
575 !f> end interface
576 !f>
577 */
578int elpa_index_print_settings(elpa_index_t index, char* filename);
579
580/*
581 !f> interface
582 !f> function elpa_index_load_settings_c(index, file_name) result(success) &
583 !f> bind(C, name="elpa_index_load_settings")
584 !f> import c_int, c_ptr, c_char
585 !f> type(c_ptr), intent(in), value :: index
586 !f> character(kind=c_char), intent(in) :: file_name(*)
587 !f> integer(kind=c_int) :: success
588 !f> end function
589 !f> end interface
590 !f>
591 */
592int elpa_index_load_settings(elpa_index_t index, char* filename);
593
594/*
595 !f> interface
596 !f> function elpa_index_print_autotune_state_c(index, autotune_level, autotune_domain, min_loc, &
597 !f> min_val, current, cardinality, file_name) result(success) &
598 !f> bind(C, name="elpa_index_print_autotune_state")
599 !f> import c_int, c_ptr, c_char, c_double
600 !f> type(c_ptr), intent(in), value :: index
601 !f> integer(kind=c_int), intent(in), value :: autotune_level, autotune_domain, min_loc, current, cardinality
602 !f> real(kind=c_double), intent(in), value :: min_val
603 !f> character(kind=c_char), intent(in) :: file_name(*)
604 !f> integer(kind=c_int) :: success
605 !f> end function
606 !f> end interface
607 !f>
608 */
609int elpa_index_print_autotune_state(elpa_index_t index, int autotune_level, int autotune_domain, int min_loc,
610 double min_val, int current, int cardinality, char* filename);
611
612
613/*
614 !f> interface
615 !f> function elpa_index_print_autotune_state_new_stepping_c(index, &
616 !f> autotune_level, autotune_domain, autotune_part, min_loc, &
617 !f> min_val, current, cardinality, solver, file_name) result(success) &
618 !f> bind(C, name="elpa_index_print_autotune_state_new_stepping")
619 !f> import c_int, c_ptr, c_char, c_double
620 !f> type(c_ptr), intent(in), value :: index
621 !f> integer(kind=c_int), intent(in), value :: autotune_level, &
622 !f> autotune_domain, &
623 !f> min_loc, current, &
624 !f> cardinality
625 !f> integer(kind=c_int), intent(in), value :: autotune_part, solver
626 !f> real(kind=c_double), intent(in), value :: min_val
627 !f> character(kind=c_char), intent(in) :: file_name(*)
628 !f> integer(kind=c_int) :: success
629 !f> end function
630 !f> end interface
631 !f>
632 */
633int elpa_index_print_autotune_state_new_stepping(elpa_index_t index, int autotune_level, int autotune_domain, int autotune_part, int min_loc,
634 double min_val, int current, int cardinality, int solver, char* filename);
635
636/*
637 !f> interface
638 !f> function elpa_index_load_autotune_state_c(index, autotune_level, autotune_domain, min_loc, &
639 !f> min_val, current, cardinality, file_name) result(success) &
640 !f> bind(C, name="elpa_index_load_autotune_state")
641 !f> import c_int, c_ptr, c_char, c_double
642 !f> type(c_ptr), intent(in), value :: index
643 !f> integer(kind=c_int), intent(in) :: autotune_level, autotune_domain, min_loc, current, cardinality
644 !f> real(kind=c_double), intent(in) :: min_val
645 !f> character(kind=c_char), intent(in) :: file_name(*)
646 !f> integer(kind=c_int) :: success
647 !f> end function
648 !f> end interface
649 !f>
650 */
651int elpa_index_load_autotune_state(elpa_index_t index, int* autotune_level, int* autotune_domain, int* min_loc,
652 double* min_val, int* current, int* cardinality, char* filename);
653
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)
float * elpa_index_get_float_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
elpa_index_t elpa_index_instance()
NOTIFY_FLAGS
Definition elpa_index.h:126
@ NOTIFY_ENV_FORCE
Definition elpa_index.h:128
@ NOTIFY_ENV_DEFAULT
Definition elpa_index.h:127
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_state_new_stepping(elpa_index_t index, int autotune_level, int autotune_domain, int autotune_part, int min_loc, double min_val, int current, int cardinality, int solver, 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)
const char *(* elpa_index_to_string_int_t)(int n)
Definition elpa_index.h:85
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)
double * elpa_index_get_double_loc(elpa_index_t index, 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
int elpa_index_set_int_value(elpa_index_t index, char *name, int value)
int * elpa_index_get_int_loc(elpa_index_t index, char *name)
int elpa_index_set_float_value(elpa_index_t index, char *name, float value)
void elpa_index_free(elpa_index_t index)
int elpa_index_autotune_cardinality_new_stepping(elpa_index_t index, int autotune_level, int autotune_domain, int autotune_part)
int elpa_index_set_autotune_parameters_new_stepping(elpa_index_t index, int autotune_level, int autotune_domain, int autotune_part, int n)
int elpa_index_print_autotune_parameters_new_stepping(elpa_index_t index, int autotune_level, int autotune_domain, int autotune_part)
int elpa_int_value_to_strlen(char *name, int value)
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:131
@ PRINT_STRUCTURE
Definition elpa_index.h:132
@ PRINT_YES
Definition elpa_index.h:133
@ PRINT_NO
Definition elpa_index.h:134
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:138
Definition elpa_index.h:120
elpa_index_entry_t base
Definition elpa_index.h:121
double default_value
Definition elpa_index.h:122
elpa_index_valid_double_t valid
Definition elpa_index.h:123
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:113
elpa_index_entry_t base
Definition elpa_index.h:114
elpa_index_valid_float_t valid
Definition elpa_index.h:116
float default_value
Definition elpa_index.h:115
Definition elpa_index.h:99
int default_value
Definition elpa_index.h:101
int autotune_level
Definition elpa_index.h:103
int autotune_domain
Definition elpa_index.h:104
elpa_index_enumerate_int_option_t enumerate
Definition elpa_index.h:108
elpa_index_valid_int_t valid
Definition elpa_index.h:106
elpa_index_to_string_int_t to_string
Definition elpa_index.h:109
int autotune_part
Definition elpa_index.h:105
elpa_index_cardinality_t cardinality
Definition elpa_index.h:107
int autotune_level_old
Definition elpa_index.h:102
elpa_index_entry_t base
Definition elpa_index.h:100
Definition elpa_index.h:137