OpenMPI  0.1.1
op_example_module_bxor.c File Reference

This is the bxor 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/example/op_example.h"

Data Structures

struct  module_bxor_t
 Derive a struct from the base op module struct, allowing us to cache some module-specific information for BXOR. More...
 

Functions

static void module_bxor_constructor (module_bxor_t *m)
 "Constructor" for the bxor module class
 
static void module_bxor_destructor (module_bxor_t *m)
 "Destructor" for the bxor module class
 
static OBJ_CLASS_INSTANCE (module_bxor_t, ompi_op_base_module_t, module_bxor_constructor, module_bxor_destructor)
 Setup the class for the bxor module, listing: More...
 
static void bxor_int (void *in, void *out, int *count, ompi_datatype_t **type, ompi_op_base_module_t *module)
 Bxor function for C int.
 
static void bxor_long (void *in, void *out, int *count, ompi_datatype_t **type, ompi_op_base_module_t *module)
 Bxor function for C long.
 
static void bxor_integer (void *in, void *out, int *count, ompi_datatype_t **type, ompi_op_base_module_t *module)
 Bxor function for Fortran INTEGER.
 
ompi_op_base_module_tompi_op_example_setup_bxor (ompi_op_t *op)
 Setup function for MPI_BXOR. More...
 

Detailed Description

This is the bxor module source code.

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

Function Documentation

static OBJ_CLASS_INSTANCE ( module_bxor_t  ,
ompi_op_base_module_t  ,
module_bxor_constructor  ,
module_bxor_destructor   
)
static

Setup the class for the bxor 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_example_setup_bxor ( ompi_op_t op)

Setup function for MPI_BXOR.

Setup for MPI_BXOR 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 BXOR 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.

This function is not allowed to changed the op; it can only read it to save functions/modules that were already set. The op base will analyze what was returned in the module and re-set values on the op if necessary.

References bxor_int(), bxor_integer(), bxor_long(), ompi_op_t::intrinsic, ompi_op_t::o_func, OBJ_RETAIN, OMPI_OP_BASE_TYPE_INTEGER, and ompi_op_base_module_1_0_0_t::opm_fns.