This makes sense to me.

Brian

On 7/1/11 8:45 AM, "Mike Dubman" <mike.o...@gmail.com> wrote:

>WHAT: Adding communicator add/delete callbacks to MTL.
>WHY: MTL will be able to separate messages on different contexts.
>WHEN: On trunk (later on v1.5 as well), Tuesday telconf, 5 July 2011
>TIMEOUT: Tuesday telconf, 12 July 2011
>DETAILS:
> 
> Currently MTLs do no handle communicator contexts in any special way,
>they only add the context id to the tag selection of the underlying
>messaging meachinsm.
> 
> We would like to enable an MTL to maintain its own context data
>per-communicator. This way an MTL will be able to queue incoming eager
>messages and rendezvous requests per-communicator basis.
> The MTL will be allowed to override comm->c_pml_comm member,
>since it's unused in pml_cm anyway.
>
>diff -r 0f757f8f3efb -r 8fcf276ee527 ompi/mca/mtl/mtl.h
>--- a/ompi/mca/mtl/mtl.h Thu Jun 30 14:13:33 2011 +0300
>+++ b/ompi/mca/mtl/mtl.h Fri Jul 01 13:54:20 2011 +0300
>@@ -355,6 +355,34 @@
> 
> 
> /**
>+ * Downcall from PML layer when a new communicator is created.
>+ *
>+ * @param comm  Communicator
>+ * @return      OMPI_SUCCESS or failure status.
>+ *
>+ * Provides the MTL the opportunity to initialize/cache a data structure
>+ * on the communicator.
>+ */
>+typedef int (*mca_mtl_base_module_add_comm_fn_t)(
>+                          struct mca_mtl_base_module_t* mtl,
>+                          struct ompi_communicator_t* comm);
>+
>+
>+/**
>+ * Downcall from PML layer when a communicator is destroyed.
>+ *
>+ * @param comm  Communicator
>+ * @return      OMPI_SUCCESS or failure status.
>+ *
>+ * Provides the MTL the opportunity to cleanup any datastructures
>+ * associated with the communicator.
>+ */
>+typedef int (*mca_mtl_base_module_del_comm_fn_t)(
>+                          struct mca_mtl_base_module_t* mtl,
>+                          struct ompi_communicator_t* comm);
>+
>+
>+/**
>  * MTL module interface functions and attributes.
>  */
> struct mca_mtl_base_module_t {
>@@ -368,7 +396,6 @@
>     mca_mtl_base_module_add_procs_fn_t   mtl_add_procs;
>     mca_mtl_base_module_del_procs_fn_t   mtl_del_procs;
>     mca_mtl_base_module_finalize_fn_t    mtl_finalize;
>-
>     mca_mtl_base_module_send_fn_t        mtl_send;
>     mca_mtl_base_module_isend_fn_t       mtl_isend;
>     mca_mtl_base_module_irecv_fn_t       mtl_irecv;
>@@ -376,6 +403,8 @@
> 
>     /* Optional MTL functions */
>     mca_mtl_base_module_cancel_fn_t      mtl_cancel;
>+    mca_mtl_base_module_add_comm_fn_t    mtl_add_comm;
>+    mca_mtl_base_module_del_comm_fn_t    mtl_del_comm;
> };
> typedef struct mca_mtl_base_module_t mca_mtl_base_module_t;
> 
>diff -r 0f757f8f3efb -r 8fcf276ee527 ompi/mca/pml/cm/pml_cm.c
>--- a/ompi/mca/pml/cm/pml_cm.c Thu Jun 30 14:13:33 2011 +0300
>+++ b/ompi/mca/pml/cm/pml_cm.c Fri Jul 01 13:54:20 2011 +0300
>@@ -82,14 +82,22 @@
> int
> mca_pml_cm_add_comm(ompi_communicator_t* comm)
> {
>+    int ret;
>+
>     /* should never happen, but it was, so check */
>     if (comm->c_contextid > ompi_pml_cm.super.pml_max_contextid) {
>         return OMPI_ERR_OUT_OF_RESOURCE;
>     }
> 
>-    /* setup our per-communicator data */
>+    /* initialize per-communicator data. MTLs may override this. */
>     comm->c_pml_comm = NULL;
> 
>+    /* notify the MTL about the added communicator */
>+    if ((NULL != ompi_mtl->mtl_add_comm) &&
>+        (OMPI_SUCCESS != (ret = OMPI_MTL_CALL(add_comm(ompi_mtl,
>comm))))) {
>+        return ret;
>+    }
>+
>     return OMPI_SUCCESS;
> }
> 
>@@ -97,8 +105,13 @@
> int
> mca_pml_cm_del_comm(ompi_communicator_t* comm)
> {
>-    /* clean up our per-communicator data */
>-    comm->c_pml_comm = NULL;
>+    int ret;
>+
>+    /* notify the MTL about the deleted communicator */
>+    if ((NULL != ompi_mtl->mtl_del_comm) &&
>+        (OMPI_SUCCESS != (ret = OMPI_MTL_CALL(del_comm(ompi_mtl,
>comm))))) {
>+        return ret;
>+    }
> 
>     return OMPI_SUCCESS;
> }
>
>
>_______________________________________________
>devel-core mailing list
>devel-c...@open-mpi.org
>http://www.open-mpi.org/mailman/listinfo.cgi/devel-core


-- 
  Brian W. Barrett
  Dept. 1423: Scalable System Software
  Sandia National Laboratories






Reply via email to