1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
2 /*
3 * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
4 * University Research and Technology
5 * Corporation. All rights reserved.
6 * Copyright (c) 2004-2005 The University of Tennessee and The University
7 * of Tennessee Research Foundation. All rights
8 * reserved.
9 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
10 * University of Stuttgart. All rights reserved.
11 * Copyright (c) 2004-2005 The Regents of the University of California.
12 * All rights reserved.
13 * Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
14 * Copyright (c) 2008-2016 University of Houston. All rights reserved.
15 * Copyright (c) 2015 Los Alamos National Security, LLC. All rights
16 * reserved.
17 * $COPYRIGHT$
18 *
19 * Additional copyrights may follow
20 *
21 * $HEADER$
22 *
23 * These symbols are in a file by themselves to provide nice linker
24 * semantics. Since linkers generally pull in symbols by object
25 * files, keeping these symbols as the only symbols in this file
26 * prevents utility programs such as "ompi_info" from having to import
27 * entire components just to query their version and parameters.
28 */
29
30 #include "ompi_config.h"
31 #include "fcoll_dynamic_gen2.h"
32 #include "mpi.h"
33
34 /*
35 * Public string showing the fcoll ompi_dynamic_gen2 component version number
36 */
37 const char *mca_fcoll_dynamic_gen2_component_version_string =
38 "Open MPI dynamic_gen2 collective MCA component version " OMPI_VERSION;
39
40 /*
41 * Global variables
42 */
43 int mca_fcoll_dynamic_gen2_priority = 10;
44 int mca_fcoll_dynamic_gen2_num_groups = 1;
45 int mca_fcoll_dynamic_gen2_write_chunksize = -1;
46
47 /*
48 * Local function
49 */
50 static int dynamic_gen2_register(void);
51
52 /*
53 * Instantiate the public struct with all of our public information
54 * and pointers to our public functions in it
55 */
56 mca_fcoll_base_component_2_0_0_t mca_fcoll_dynamic_gen2_component = {
57
58 /* First, the mca_component_t struct containing meta information
59 * about the component itself */
60
61 .fcollm_version = {
62 MCA_FCOLL_BASE_VERSION_2_0_0,
63
64 /* Component name and version */
65 .mca_component_name = "dynamic_gen2",
66 MCA_BASE_MAKE_VERSION(component, OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
67 OMPI_RELEASE_VERSION),
68 .mca_register_component_params = dynamic_gen2_register,
69 },
70 .fcollm_data = {
71 /* The component is checkpoint ready */
72 MCA_BASE_METADATA_PARAM_CHECKPOINT
73 },
74
75 .fcollm_init_query = mca_fcoll_dynamic_gen2_component_init_query,
76 .fcollm_file_query = mca_fcoll_dynamic_gen2_component_file_query,
77 .fcollm_file_unquery = mca_fcoll_dynamic_gen2_component_file_unquery,
78 };
79
80
81 static int
82 dynamic_gen2_register(void)
83 {
84 mca_fcoll_dynamic_gen2_priority = 10;
85 (void) mca_base_component_var_register(&mca_fcoll_dynamic_gen2_component.fcollm_version,
86 "priority", "Priority of the dynamic_gen2 fcoll component",
87 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
88 OPAL_INFO_LVL_9,
89 MCA_BASE_VAR_SCOPE_READONLY, &mca_fcoll_dynamic_gen2_priority);
90
91 mca_fcoll_dynamic_gen2_num_groups = 1;
92 (void) mca_base_component_var_register(&mca_fcoll_dynamic_gen2_component.fcollm_version,
93 "num_groups", "Number of subgroups created by the dynamic_gen2 component",
94 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
95 OPAL_INFO_LVL_9,
96 MCA_BASE_VAR_SCOPE_READONLY, &mca_fcoll_dynamic_gen2_num_groups);
97
98 mca_fcoll_dynamic_gen2_write_chunksize = -1;
99 (void) mca_base_component_var_register(&mca_fcoll_dynamic_gen2_component.fcollm_version,
100 "write_chunksize", "Chunk size written at once. Default: stripe_size of the file system",
101 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
102 OPAL_INFO_LVL_9,
103 MCA_BASE_VAR_SCOPE_READONLY, &mca_fcoll_dynamic_gen2_write_chunksize);
104
105 return OMPI_SUCCESS;
106 }