Skip to content
This repository was archived by the owner on Sep 30, 2022. It is now read-only.

fcoll/dynamic_gen2: add new component #987

Merged
merged 1 commit into from
Sep 14, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions ompi/mca/fcoll/dynamic_gen2/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#
# 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-2015 University of Houston. All rights reserved.
# Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#

sources = \
fcoll_dynamic_gen2.h \
fcoll_dynamic_gen2_module.c \
fcoll_dynamic_gen2_component.c \
fcoll_dynamic_gen2_file_read_all.c \
fcoll_dynamic_gen2_file_write_all.c

# Make the output library in this directory, and name it either
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
# (for static builds).

if MCA_BUILD_ompi_fcoll_dynamic_gen2_DSO
component_noinst =
component_install = mca_fcoll_dynamic_gen2.la
else
component_noinst = libmca_fcoll_dynamic_gen2.la
component_install =
endif

mcacomponentdir = $(ompilibdir)
mcacomponent_LTLIBRARIES = $(component_install)
mca_fcoll_dynamic_gen2_la_SOURCES = $(sources)
mca_fcoll_dynamic_gen2_la_LDFLAGS = -module -avoid-version

noinst_LTLIBRARIES = $(component_noinst)
libmca_fcoll_dynamic_gen2_la_SOURCES =$(sources)
libmca_fcoll_dynamic_gen2_la_LDFLAGS = -module -avoid-version
71 changes: 71 additions & 0 deletions ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2006 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-2016 University of Houston. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/

#ifndef MCA_FCOLL_DYNAMIC_EXPORT_H
#define MCA_FCOLL_DYNAMIC_EXPORT_H

#include "ompi_config.h"

#include "mpi.h"
#include "ompi/mca/mca.h"
#include "ompi/mca/fcoll/fcoll.h"
#include "ompi/mca/fcoll/base/base.h"
#include "ompi/mca/io/ompio/io_ompio.h"

BEGIN_C_DECLS

/* Globally exported variables */

extern int mca_fcoll_dynamic_gen2_priority;
extern int mca_fcoll_dynamic_gen2_num_groups;
extern int mca_fcoll_dynamic_gen2_write_chunksize;

OMPI_MODULE_DECLSPEC extern mca_fcoll_base_component_2_0_0_t mca_fcoll_dynamic_gen2_component;

/* API functions */

int mca_fcoll_dynamic_gen2_component_init_query(bool enable_progress_threads,
bool enable_mpi_threads);
struct mca_fcoll_base_module_1_0_0_t *
mca_fcoll_dynamic_gen2_component_file_query (mca_io_ompio_file_t *fh, int *priority);

int mca_fcoll_dynamic_gen2_component_file_unquery (mca_io_ompio_file_t *file);

int mca_fcoll_dynamic_gen2_module_init (mca_io_ompio_file_t *file);
int mca_fcoll_dynamic_gen2_module_finalize (mca_io_ompio_file_t *file);

int mca_fcoll_dynamic_gen2_file_read_all (mca_io_ompio_file_t *fh,
void *buf,
int count,
struct ompi_datatype_t *datatype,
ompi_status_public_t * status);


int mca_fcoll_dynamic_gen2_file_write_all (mca_io_ompio_file_t *fh,
const void *buf,
int count,
struct ompi_datatype_t *datatype,
ompi_status_public_t * status);


END_C_DECLS

#endif /* MCA_FCOLL_DYNAMIC_EXPORT_H */
106 changes: 106 additions & 0 deletions ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_component.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
* Copyright (c) 2004-2007 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 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2008-2016 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 "fcoll_dynamic_gen2.h"
#include "mpi.h"

/*
* Public string showing the fcoll ompi_dynamic_gen2 component version number
*/
const char *mca_fcoll_dynamic_gen2_component_version_string =
"Open MPI dynamic_gen2 collective MCA component version " OMPI_VERSION;

/*
* Global variables
*/
int mca_fcoll_dynamic_gen2_priority = 10;
int mca_fcoll_dynamic_gen2_num_groups = 1;
int mca_fcoll_dynamic_gen2_write_chunksize = -1;

/*
* Local function
*/
static int dynamic_gen2_register(void);

/*
* Instantiate the public struct with all of our public information
* and pointers to our public functions in it
*/
mca_fcoll_base_component_2_0_0_t mca_fcoll_dynamic_gen2_component = {

/* First, the mca_component_t struct containing meta information
* about the component itself */

.fcollm_version = {
MCA_FCOLL_BASE_VERSION_2_0_0,

/* Component name and version */
.mca_component_name = "dynamic_gen2",
MCA_BASE_MAKE_VERSION(component, OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
OMPI_RELEASE_VERSION),
.mca_register_component_params = dynamic_gen2_register,
},
.fcollm_data = {
/* The component is checkpoint ready */
MCA_BASE_METADATA_PARAM_CHECKPOINT
},

.fcollm_init_query = mca_fcoll_dynamic_gen2_component_init_query,
.fcollm_file_query = mca_fcoll_dynamic_gen2_component_file_query,
.fcollm_file_unquery = mca_fcoll_dynamic_gen2_component_file_unquery,
};


static int
dynamic_gen2_register(void)
{
mca_fcoll_dynamic_gen2_priority = 10;
(void) mca_base_component_var_register(&mca_fcoll_dynamic_gen2_component.fcollm_version,
"priority", "Priority of the dynamic_gen2 fcoll component",
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY, &mca_fcoll_dynamic_gen2_priority);

mca_fcoll_dynamic_gen2_num_groups = 1;
(void) mca_base_component_var_register(&mca_fcoll_dynamic_gen2_component.fcollm_version,
"num_groups", "Number of subgroups created by the dynamic_gen2 component",
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY, &mca_fcoll_dynamic_gen2_num_groups);

mca_fcoll_dynamic_gen2_write_chunksize = -1;
(void) mca_base_component_var_register(&mca_fcoll_dynamic_gen2_component.fcollm_version,
"write_chunksize", "Chunk size written at once. Default: stripe_size of the file system",
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY, &mca_fcoll_dynamic_gen2_write_chunksize);

return OMPI_SUCCESS;
}
Loading