1
1
openmpi/ompi/mca/bml/r2/bml_r2.h
George Bosilca 6310ce955c The first patch related to the Active Message stuff. So far, here is what we have:
- the registration array is now global instead of one by BTL.
- each framework have to declare the entries in the registration array reserved. Then
  it have to define the internal way of sharing (or not) these entries between all
  components. As an example, the PML will not share as there is only one active PML
  at any moment, while the BTLs will have to. The tag is 8 bits long, the first 3
  are reserved for the framework while the remaining 5 are use internally by each
  framework.
- The registration function is optional. If a BTL do not provide such function,
  nothing happens. However, in the case where such function is provided in the BTL
  structure, it will be called by the BML, when a tag is registered.

Now, it's time for the second step... Converting OB1 from a switch based PML to an
active message one.

This commit was SVN r17140.
2008-01-15 05:32:53 +00:00

97 строки
2.8 KiB
C

/*
* Copyright (c) 2004-2007 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-2006 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
/**
* @file
*
* BML Management Layer (BML)
*
*/
#include "opal/mca/mca.h"
#include "ompi/mca/btl/btl.h"
#ifndef MCA_BML_R2_H
#define MCA_BML_R2_H
#include "ompi/types.h"
#include "ompi/class/ompi_free_list.h"
#include "ompi/mca/bml/bml.h"
#if defined(c_plusplus) || defined(__cplusplus)
extern "C" {
#endif
/**
* BML module interface functions and attributes.
*/
struct mca_bml_r2_module_t {
mca_bml_base_module_t super;
size_t num_btl_modules;
mca_btl_base_module_t** btl_modules;
size_t num_btl_progress;
mca_btl_base_component_progress_fn_t * btl_progress;
bool btls_added;
bool show_unreach_errors;
};
typedef struct mca_bml_r2_module_t mca_bml_r2_module_t;
OMPI_DECLSPEC extern mca_bml_base_component_1_0_0_t mca_bml_r2_component;
extern mca_bml_r2_module_t mca_bml_r2;
int mca_bml_r2_component_open(void);
int mca_bml_r2_component_close(void);
mca_bml_base_module_t* mca_bml_r2_component_init( int* priority,
bool enable_progress_threads,
bool enable_mpi_threads );
int mca_bml_r2_progress(void);
int mca_bml_r2_add_procs( size_t nprocs,
struct ompi_proc_t** procs,
struct mca_bml_base_endpoint_t** bml_endpoints,
struct ompi_bitmap_t* reachable );
int mca_bml_r2_del_procs( size_t nprocs,
struct ompi_proc_t** procs );
int mca_bml_r2_add_btl( mca_btl_base_module_t* btl );
int mca_bml_r2_del_btl( mca_btl_base_module_t* btl );
int mca_bml_r2_del_proc_btl( struct ompi_proc_t* proc, mca_btl_base_module_t* btl );
int mca_bml_r2_register( mca_btl_base_tag_t tag,
mca_btl_base_module_recv_cb_fn_t cbfunc,
void* data );
int mca_bml_r2_register_error( mca_btl_base_module_error_cb_fn_t cbfunc );
int mca_bml_r2_finalize( void );
int mca_bml_r2_component_fini(void);
int mca_bml_r2_ft_event(int status);
#if defined(c_plusplus) || defined(__cplusplus)
}
#endif
#endif /* OMPI_MCA_BML_R2_H */