File indexing completed on 2025-02-22 10:47:29
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037 #ifndef MCA_GRPCOMM_H
0038 #define MCA_GRPCOMM_H
0039
0040
0041
0042
0043
0044 #include "prte_config.h"
0045 #include "constants.h"
0046 #include "types.h"
0047
0048 #include "src/class/pmix_bitmap.h"
0049 #include "src/class/pmix_list.h"
0050 #include "src/pmix/pmix-internal.h"
0051 #include "src/mca/mca.h"
0052 #include "src/rml/rml_types.h"
0053
0054 BEGIN_C_DECLS
0055
0056
0057
0058 typedef void (*prte_grpcomm_cbfunc_t)(int status, pmix_data_buffer_t *buf, void *cbdata);
0059
0060 typedef int (*prte_grpcomm_rbcast_cb_t)(pmix_data_buffer_t *buffer);
0061
0062
0063
0064 typedef struct {
0065 pmix_object_t super;
0066 pmix_proc_t *signature;
0067 size_t sz;
0068 } prte_grpcomm_signature_t;
0069 PRTE_EXPORT PMIX_CLASS_DECLARATION(prte_grpcomm_signature_t);
0070
0071
0072
0073 typedef struct {
0074 pmix_list_item_t super;
0075
0076 prte_grpcomm_signature_t *sig;
0077 pmix_status_t status;
0078
0079 pmix_data_buffer_t bucket;
0080
0081 pmix_rank_t *dmns;
0082
0083 size_t ndmns;
0084
0085 unsigned long my_rank;
0086
0087 size_t nexpected;
0088
0089 size_t nreported;
0090
0091 bool assignID;
0092 int timeout;
0093 size_t memsize;
0094 pmix_list_t addmembers;
0095
0096 pmix_bitmap_t distance_mask_recv;
0097
0098 pmix_data_buffer_t **buffers;
0099
0100 prte_grpcomm_cbfunc_t cbfunc;
0101
0102 void *cbdata;
0103 } prte_grpcomm_coll_t;
0104 PMIX_CLASS_DECLARATION(prte_grpcomm_coll_t);
0105
0106 typedef struct {
0107 pmix_object_t super;
0108 prte_event_t ev;
0109 prte_grpcomm_signature_t *sig;
0110 pmix_group_operation_t op;
0111 char *grpid;
0112 pmix_data_buffer_t *buf;
0113 pmix_byte_object_t ctrls;
0114 pmix_proc_t *procs;
0115 size_t nprocs;
0116 pmix_info_t *info;
0117 size_t ninfo;
0118 prte_grpcomm_cbfunc_t grpcbfunc;
0119 pmix_modex_cbfunc_t mdxcbfunc;
0120 pmix_info_cbfunc_t infocbfunc;
0121 pmix_op_cbfunc_t opcbfunc;
0122 void *cbdata;
0123 void *relcbdata;
0124 } prte_pmix_mdx_caddy_t;
0125 PMIX_CLASS_DECLARATION(prte_pmix_mdx_caddy_t);
0126
0127
0128
0129
0130
0131
0132 typedef int (*prte_grpcomm_base_module_init_fn_t)(void);
0133
0134
0135 typedef void (*prte_grpcomm_base_module_finalize_fn_t)(void);
0136
0137
0138
0139
0140 typedef int (*prte_grpcomm_base_module_xcast_fn_t)(pmix_rank_t *vpids, size_t nprocs,
0141 pmix_data_buffer_t *msg);
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151 typedef int (*prte_grpcomm_base_module_allgather_fn_t)(prte_grpcomm_coll_t *coll,
0152 prte_pmix_mdx_caddy_t *cd);
0153
0154
0155
0156
0157 typedef int (*prte_grpcomm_base_module_rbcast_fn_t)(pmix_data_buffer_t *msg);
0158
0159 typedef int (*prte_grpcomm_base_module_rbcast_register_cb_fn_t)(prte_grpcomm_rbcast_cb_t callback);
0160
0161 typedef int (*prte_grpcomm_base_module_rbcast_unregister_cb_fn_t)(int type);
0162
0163
0164
0165
0166 typedef struct {
0167 prte_grpcomm_base_module_init_fn_t init;
0168 prte_grpcomm_base_module_finalize_fn_t finalize;
0169
0170 prte_grpcomm_base_module_xcast_fn_t xcast;
0171 prte_grpcomm_base_module_allgather_fn_t allgather;
0172 prte_grpcomm_base_module_rbcast_fn_t rbcast;
0173 prte_grpcomm_base_module_rbcast_register_cb_fn_t register_cb;
0174 prte_grpcomm_base_module_rbcast_unregister_cb_fn_t unregister_cb;
0175 } prte_grpcomm_base_module_t;
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185 typedef int (*prte_grpcomm_base_API_xcast_fn_t)(prte_grpcomm_signature_t *sig, prte_rml_tag_t tag,
0186 pmix_data_buffer_t *msg);
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197 typedef int (*prte_grpcomm_base_API_allgather_fn_t)(prte_pmix_mdx_caddy_t *cd);
0198
0199
0200
0201
0202
0203 typedef int (*prte_grpcomm_base_API_rbcast_fn_t)(prte_grpcomm_signature_t *sig, prte_rml_tag_t tag,
0204 pmix_data_buffer_t *msg);
0205
0206 typedef int (*prte_grpcomm_base_API_rbcast_register_cb_fn_t)(prte_grpcomm_rbcast_cb_t callback);
0207
0208 typedef int (*prte_grpcomm_base_API_rbcast_unregister_cb_fn_t)(int type);
0209
0210 typedef struct {
0211
0212 prte_grpcomm_base_API_xcast_fn_t xcast;
0213 prte_grpcomm_base_API_allgather_fn_t allgather;
0214 prte_grpcomm_base_API_rbcast_fn_t rbcast;
0215 prte_grpcomm_base_API_rbcast_register_cb_fn_t register_cb;
0216 prte_grpcomm_base_API_rbcast_unregister_cb_fn_t unregister_cb;
0217 } prte_grpcomm_API_module_t;
0218
0219
0220
0221
0222 typedef pmix_mca_base_component_t prte_grpcomm_base_component_t;
0223
0224
0225
0226
0227 #define PRTE_GRPCOMM_BASE_VERSION_3_0_0 \
0228 \
0229 PRTE_MCA_BASE_VERSION_3_0_0("grpcomm", 3, 0, 0)
0230
0231
0232 PRTE_EXPORT extern prte_grpcomm_API_module_t prte_grpcomm;
0233
0234 END_C_DECLS
0235
0236 #endif