root/oshmem/mca/atomic/ucx/atomic_ucx_component.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ucx_register
  2. ucx_open

   1 /*
   2  * Copyright (c) 2015      Mellanox Technologies, Inc.
   3  *                         All rights reserved.
   4  * $COPYRIGHT$
   5  * 
   6  * Additional copyrights may follow
   7  * 
   8  * $HEADER$
   9  */
  10 
  11 #include "oshmem_config.h"
  12 
  13 #include "oshmem/constants.h"
  14 #include "oshmem/mca/atomic/atomic.h"
  15 #include "oshmem/mca/atomic/base/base.h"
  16 #include "oshmem/mca/spml/base/base.h"
  17 
  18 #include "atomic_ucx.h"
  19 
  20 
  21 /*
  22  * Public string showing the scoll ucx component version number
  23  */
  24 const char *mca_atomic_ucx_component_version_string =
  25 "Open SHMEM ucx atomic MCA component version " OSHMEM_VERSION;
  26 
  27 /*
  28  * Global variable
  29  */
  30 mca_spml_ucx_t *mca_spml_self = NULL;
  31 
  32 /*
  33  * Local function
  34  */
  35 static int ucx_register(void);
  36 static int ucx_open(void);
  37 
  38 /*
  39  * Instantiate the public struct with all of our public information
  40  * and pointers to our public functions in it
  41  */
  42 
  43 mca_atomic_base_component_t mca_atomic_ucx_component = {
  44 
  45     /* First, the mca_component_t struct containing meta information
  46        about the component itself */
  47 
  48     {
  49         MCA_ATOMIC_BASE_VERSION_2_0_0,
  50 
  51         /* Component name and version */
  52         "ucx",
  53         OSHMEM_MAJOR_VERSION,
  54         OSHMEM_MINOR_VERSION,
  55         OSHMEM_RELEASE_VERSION,
  56 
  57         /* component open */
  58         ucx_open,
  59         /* component close */
  60         NULL,
  61         /* component query */
  62         NULL,
  63         /* component register */
  64         ucx_register
  65     },
  66     {
  67         /* The component is checkpoint ready */
  68         MCA_BASE_METADATA_PARAM_CHECKPOINT
  69     },
  70 
  71     /* Initialization / querying functions */
  72 
  73     mca_atomic_ucx_startup,
  74     mca_atomic_ucx_finalize,
  75     mca_atomic_ucx_query
  76 };
  77 
  78 static int ucx_register(void)
  79 {
  80     mca_atomic_ucx_component.priority = 100;
  81     mca_base_component_var_register (&mca_atomic_ucx_component.atomic_version,
  82                                      "priority", "Priority of the atomic:ucx "
  83                                      "component (default: 100)", MCA_BASE_VAR_TYPE_INT,
  84                                      NULL, 0, MCA_BASE_VAR_FLAG_SETTABLE,
  85                                      OPAL_INFO_LVL_3,
  86                                      MCA_BASE_VAR_SCOPE_ALL_EQ,
  87                                      &mca_atomic_ucx_component.priority);
  88 
  89     opal_common_ucx_mca_var_register(&mca_atomic_ucx_component.atomic_version);
  90 
  91     return OSHMEM_SUCCESS;
  92 }
  93 
  94 static int ucx_open(void)
  95 {
  96     /*
  97      * This component is able to work using spml:ikrit component only
  98      * (this check is added instead of !mca_spml_ikrit.enabled)
  99      */
 100     if (strcmp(mca_spml_base_selected_component.spmlm_version.mca_component_name, "ucx")) {
 101         ATOMIC_VERBOSE(5,
 102                        "Can not use atomic/ucx because spml ucx component disabled");
 103         return OSHMEM_ERR_NOT_AVAILABLE;
 104     }
 105     mca_spml_self = (mca_spml_ucx_t *)mca_spml.self;
 106 
 107     return OSHMEM_SUCCESS;
 108 }
 109 
 110 OBJ_CLASS_INSTANCE(mca_atomic_ucx_module_t,
 111                    mca_atomic_base_module_t,
 112                    NULL,
 113                    NULL);
 114 

/* [<][>][^][v][top][bottom][index][help] */