Signed-off-by: Arlin Davis <arlin.r.da...@intel.com> --- dapl/openib_common/ib_extensions.c | 190 ++++++++++++++++++++++++++++++++++++ 1 files changed, 190 insertions(+), 0 deletions(-)
diff --git a/dapl/openib_common/ib_extensions.c b/dapl/openib_common/ib_extensions.c index 3c418e1..c85323c 100644 --- a/dapl/openib_common/ib_extensions.c +++ b/dapl/openib_common/ib_extensions.c @@ -32,6 +32,10 @@ #include "dapl_cookie.h" #include <stdarg.h> +#ifdef DAT_IB_COLLECTIVES +#include "collectives/ib_collectives.h" +#endif + DAT_RETURN dapli_post_ext(IN DAT_EP_HANDLE ep_handle, IN DAT_UINT64 cmp_add, @@ -181,7 +185,193 @@ dapl_extensions(IN DAT_HANDLE dat_handle, break; } #endif /* DAPL_COUNTERS */ +#ifdef DAT_IB_COLLECTIVES + case DAT_IB_COLLECTIVE_CREATE_MEMBER_OP: + { + void *progress_func; + DAT_IB_COLLECTIVE_MEMBER *member_p; + DAT_COUNT *size_p; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + " COLLECTIVE_CREATE_MEMBER extension call\n"); + + progress_func = va_arg(args, void *); + member_p = va_arg(args, DAT_IB_COLLECTIVE_MEMBER *); + size_p = va_arg(args, DAT_COUNT *); + + return dapli_create_collective_member(dat_handle, + progress_func, + size_p, + member_p); + } + case DAT_IB_COLLECTIVE_FREE_MEMBER_OP: + { + DAT_IB_COLLECTIVE_MEMBER member; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + " COLLECTIVE_FREE_MEMBER extension call\n"); + + member = va_arg(args, DAT_IB_COLLECTIVE_MEMBER); + return dapli_free_collective_member(dat_handle, member); + } + case DAT_IB_COLLECTIVE_CREATE_GROUP_OP: + { + DAT_CONTEXT context; + DAT_IB_COLLECTIVE_MEMBER *members; + DAT_IB_COLLECTIVE_GROUP *grp; + DAT_IB_COLLECTIVE_RANK rank; + DAT_IB_COLLECTIVE_ID id; + DAT_PZ_HANDLE pd; + DAT_COUNT size; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + " DAT_IB_COLLECTIVE_CREATE_GROUP extension call\n"); + + members = va_arg(args, DAT_IB_COLLECTIVE_MEMBER *);/* array */ + size = va_arg(args, DAT_COUNT);/* member count */ + rank = va_arg(args, DAT_IB_COLLECTIVE_RANK);/* rank */ + id = va_arg(args, DAT_IB_COLLECTIVE_ID);/* group id */ + grp = va_arg(args, DAT_IB_COLLECTIVE_GROUP *);/* group info */ + pd = va_arg(args, DAT_PZ_HANDLE);/* prot domain */ + context = va_arg(args, DAT_CONTEXT); + + return dapli_create_collective_group(dat_handle, pd, members, + size, rank, id, grp, context); + } + case DAT_IB_COLLECTIVE_FREE_GROUP_OP: + { + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + " DAT_IB_COLLECTIVE_FREE_GROUP extension call\n"); + return dapli_free_collective_group(dat_handle); + } + case DAT_IB_COLLECTIVE_BARRIER_OP: + { + DAT_CONTEXT context; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + "Got DAT_IB_COLLECTIVE_BARRIER extension call\n"); + + context = va_arg(args, DAT_CONTEXT); + comp_flags = va_arg(args, DAT_COMPLETION_FLAGS); + + return dapli_collective_barrier(dat_handle, context, comp_flags); + } + case DAT_IB_COLLECTIVE_BROADCAST_OP: + { + DAT_CONTEXT context; + DAT_PVOID buf; + DAT_COUNT size; + DAT_IB_COLLECTIVE_RANK root; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + "Got DAT_IB_COLLECTIVE_BROADCAST extension call\n"); + + buf = va_arg(args, DAT_PVOID); + size = va_arg(args, DAT_COUNT); + root = va_arg(args, DAT_IB_COLLECTIVE_RANK); + context = va_arg(args, DAT_CONTEXT); + comp_flags = va_arg(args, DAT_COMPLETION_FLAGS); + + return dapli_collective_broadcast(dat_handle, buf, size, + root, context, comp_flags); + + } + case DAT_IB_COLLECTIVE_REDUCE_OP: + { + DAT_CONTEXT context; + DAT_IB_COLLECTIVE_RANK root; + DAT_PVOID sbuf, rbuf; + DAT_COUNT slen, rlen; + DAT_IB_COLLECTIVE_REDUCE_DATA_OP op; + DAT_IB_COLLECTIVE_DATA_TYPE type; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + "Got DAT_IB_COLLECTIVE_REDUCE extension call\n"); + + sbuf = va_arg(args, DAT_PVOID); + slen = va_arg(args, DAT_COUNT); + rbuf = va_arg(args, DAT_PVOID); + rlen = va_arg(args, DAT_COUNT); + op = va_arg(args, DAT_IB_COLLECTIVE_REDUCE_DATA_OP); + type = va_arg(args, DAT_IB_COLLECTIVE_DATA_TYPE); + root = va_arg(args, DAT_IB_COLLECTIVE_RANK); + context = va_arg(args, DAT_CONTEXT); + comp_flags = va_arg(args, DAT_COMPLETION_FLAGS); + + return dapli_collective_reduce(dat_handle, sbuf, slen, + rbuf, rlen, op, type, root, + context, comp_flags); + } + case DAT_IB_COLLECTIVE_ALLREDUCE_OP: + { + DAT_CONTEXT context; + DAT_PVOID sbuf, rbuf; + DAT_COUNT slen, rlen; + DAT_IB_COLLECTIVE_REDUCE_DATA_OP op; + DAT_IB_COLLECTIVE_DATA_TYPE type; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + "Got DAT_IB_COLLECTIVE_ALLREDUCE extension call\n"); + + sbuf = va_arg(args, DAT_PVOID); + slen = va_arg(args, DAT_COUNT); + rbuf = va_arg(args, DAT_PVOID); + rlen = va_arg(args, DAT_COUNT); + op = va_arg(args, DAT_IB_COLLECTIVE_REDUCE_DATA_OP); + type = va_arg(args, DAT_IB_COLLECTIVE_DATA_TYPE); + context = va_arg(args, DAT_CONTEXT); + comp_flags = va_arg(args, DAT_COMPLETION_FLAGS); + + return dapli_collective_allreduce(dat_handle, sbuf, slen, + rbuf, rlen, op, type, + context, comp_flags); + } + case DAT_IB_COLLECTIVE_ALLGATHER_OP: + { + DAT_CONTEXT context; + DAT_PVOID sbuf, rbuf; + DAT_COUNT slen, rlen; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + "Got DAT_IB_COLLECTIVE_ALLGATHER extension call\n"); + + sbuf = va_arg(args, DAT_PVOID); + slen = va_arg(args, DAT_COUNT); + rbuf = va_arg(args, DAT_PVOID); + rlen = va_arg(args, DAT_COUNT); + context = va_arg(args, DAT_CONTEXT); + comp_flags = va_arg(args, DAT_COMPLETION_FLAGS); + + return dapli_collective_allgather(dat_handle, sbuf, slen, + rbuf, rlen, context, + comp_flags); + } + case DAT_IB_COLLECTIVE_ALLGATHERV_OP: + { + DAT_CONTEXT context; + DAT_PVOID sbuf, rbuf; + DAT_COUNT slen; + DAT_COUNT *rlens; + DAT_COUNT *displs; + + dapl_dbg_log(DAPL_DBG_TYPE_EXTENSION, + "Got DAT_IB_COLLECTIVE_ALLGATHERV extension call\n"); + + sbuf = va_arg(args, DAT_PVOID); + slen = va_arg(args, DAT_COUNT); + rbuf = va_arg(args, DAT_PVOID); + rlens = va_arg(args, DAT_COUNT *); + displs = va_arg(args, DAT_COUNT *); + context = va_arg(args, DAT_CONTEXT); + comp_flags = va_arg(args, DAT_COMPLETION_FLAGS); + + return dapli_collective_allgatherv(dat_handle, sbuf, slen, + rbuf, rlens, displs, + context, comp_flags); + } + +#endif default: dapl_dbg_log(DAPL_DBG_TYPE_ERR, "unsupported extension(%d)\n", (int)ext_op); -- 1.7.3 _______________________________________________ ewg mailing list ewg@lists.openfabrics.org http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg