OpenMPI  0.1.1
op_x86_module_sum.c File Reference

This is the sum module source code. More...

#include "ompi_config.h"
#include "opal/class/opal_object.h"
#include "opal/util/output.h"
#include "ompi/constants.h"
#include "ompi/op/op.h"
#include "ompi/mca/op/op.h"
#include "ompi/mca/op/base/base.h"
#include "ompi/mca/op/x86/op_x86.h"

Data Structures

struct  module_sum_t
 SUM module struct, including local cached info. More...
 

Functions

static void module_sum_constructor (module_sum_t *m)
 Sum module constructor.
 
static void module_sum_destructor (module_sum_t *m)
 Sum module destructor.
 
static OBJ_CLASS_INSTANCE (module_sum_t, ompi_op_base_module_t, module_sum_constructor, module_sum_destructor)
 Setup the class for the sum module, listing: More...
 
static void sum_float (void *in, void *out, int *count, ompi_datatype_t **type, ompi_op_base_module_t *module)
 Sum function for C float.
 
static void sum_int16_t (void *in, void *out, int *count, ompi_datatype_t **type, ompi_op_base_module_t *module)
 Sum function for C int16_t.
 
static void sum_int32_t (void *in, void *out, int *count, ompi_datatype_t **type, ompi_op_base_module_t *module)
 Sum function for C int32_t.
 
static void sum_int64_t (void *in, void *out, int *count, ompi_datatype_t **type, ompi_op_base_module_t *module)
 Sum function for C int64_t.
 
ompi_op_base_module_tompi_op_x86_setup_sum (ompi_op_t *op)
 Setup function for MPI_SUM. More...
 

Detailed Description

This is the sum module source code.

It contains the "setup" functions that will create a module for the MPI_SUM MPI_Op.

Function Documentation

static OBJ_CLASS_INSTANCE ( module_sum_t  ,
ompi_op_base_module_t  ,
module_sum_constructor  ,
module_sum_destructor   
)
static

Setup the class for the sum module, listing:

  • the name of the class
  • the "parent" of the class
  • function pointer for the constructor (or NULL)
  • function pointer for the destructor (or NULL)
ompi_op_base_module_t* ompi_op_x86_setup_sum ( ompi_op_t op)

Setup function for MPI_SUM.

Setup for MPI_MAX and return a module.

If we get here, we can assume that a) the hardware is present, b) the MPI thread scenario is what we want, and c) the SUM operation is supported. So this function's job is to create a module and fill in function pointers for the functions that this hardware supports.

References ompi_op_t::intrinsic, ompi_op_t::o_func, OBJ_RETAIN, OMPI_OP_BASE_TYPE_FLOAT, OMPI_OP_BASE_TYPE_INT16_T, OMPI_OP_BASE_TYPE_INT32_T, OMPI_OP_BASE_TYPE_INT64_T, ompi_op_base_module_1_0_0_t::opm_fns, sum_float(), sum_int16_t(), sum_int32_t(), and sum_int64_t().