1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008-2020 University of Houston. All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*
* These symbols are in a file by themselves to provide nice linker
* semantics. Since linkers generally pull in symbols by object
* files, keeping these symbols as the only symbols in this file
* prevents utility programs such as "ompi_info" from having to import
* entire components just to query their version and parameters.
*/
#include "ompi_config.h"
#include "fbtl_posix.h"
#include "mpi.h"
/*
* Public string showing the fbtl posix component version number
*/
const char *mca_fbtl_posix_component_version_string =
"OMPI/MPI posix FBTL MCA component version " OMPI_VERSION;
int mca_fbtl_posix_priority = 10;
bool mca_fbtl_posix_read_datasieving = true;
bool mca_fbtl_posix_write_datasieving = true;
size_t mca_fbtl_posix_max_block_size = 1048576; // 1MB
size_t mca_fbtl_posix_max_gap_size = 4096; // Size of a block in many linux fs
size_t mca_fbtl_posix_max_tmpbuf_size = 67108864; // 64 MB
/*
* Private functions
*/
static int register_component(void);
/*
* Instantiate the public struct with all of our public information
* and pointers to our public functions in it
*/
mca_fbtl_base_component_2_0_0_t mca_fbtl_posix_component = {
/* First, the mca_component_t struct containing meta information
about the component itself */
.fbtlm_version = {
MCA_FBTL_BASE_VERSION_2_0_0,
/* Component name and version */
.mca_component_name = "posix",
MCA_BASE_MAKE_VERSION(component, OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
OMPI_RELEASE_VERSION),
.mca_register_component_params = register_component,
},
.fbtlm_data = {
/* This component is checkpointable */
MCA_BASE_METADATA_PARAM_CHECKPOINT
},
.fbtlm_init_query = mca_fbtl_posix_component_init_query, /* get thread level */
.fbtlm_file_query = mca_fbtl_posix_component_file_query, /* get priority and actions */
.fbtlm_file_unquery = mca_fbtl_posix_component_file_unquery, /* undo what was done by previous function */
};
static int register_component(void)
{
mca_fbtl_posix_priority = 10;
(void) mca_base_component_var_register(&mca_fbtl_posix_component.fbtlm_version,
"priority", "Priority of the fbtl posix component",
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY,
&mca_fbtl_posix_priority);
mca_fbtl_posix_max_block_size = 1048576;
(void) mca_base_component_var_register(&mca_fbtl_posix_component.fbtlm_version,
"max_block_size", "Maximum average size in bytes of a data block in an iovec for data sieving. "
"An average block size larger than this parameter will disable data sieving. Default: 1048576 bytes.",
MCA_BASE_VAR_TYPE_SIZE_T, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY,
&mca_fbtl_posix_max_block_size );
mca_fbtl_posix_max_gap_size = 4096;
(void) mca_base_component_var_register(&mca_fbtl_posix_component.fbtlm_version,
"max_gap_size", "Maximum average gap size between two blocks in an iovec for data sieving. "
"An average gap size larger than this parameter will disable data sieving. Default: 4096 bytes. " ,
MCA_BASE_VAR_TYPE_SIZE_T, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY,
&mca_fbtl_posix_max_gap_size );
mca_fbtl_posix_max_tmpbuf_size = 67108864;
(void) mca_base_component_var_register(&mca_fbtl_posix_component.fbtlm_version,
"max_tmpbuf_size", "Maximum size of the temporary buffer used for data sieving in bytes. "
"Default: 67108864 (64MB). " ,
MCA_BASE_VAR_TYPE_SIZE_T, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY,
&mca_fbtl_posix_max_tmpbuf_size );
mca_fbtl_posix_read_datasieving = true;
(void) mca_base_component_var_register(&mca_fbtl_posix_component.fbtlm_version,
"read_datasieving", "Parameter indicating whether to perform data sieving for read operations. "
"Default: true.",
MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY,
&mca_fbtl_posix_read_datasieving );
mca_fbtl_posix_write_datasieving = true;
(void) mca_base_component_var_register(&mca_fbtl_posix_component.fbtlm_version,
"write_datasieving", "Parameter indicating whether to perform data sieving for write operations. "
"Default: true.",
MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY,
&mca_fbtl_posix_write_datasieving );
return OMPI_SUCCESS;
}
|