bef5f50a42
-> Added new targets in Makefile.am to call a new build script generate-opt-funcs.pl to generate specialized functions for each *.pm file. -> Added new perl module *.pm files for send,isend,irecv,iprobe,improbe which are loaded by generate-opt-funcs.pl to create new source files that correspond to the name of the .pm file to be used as part of MTL OFI. -> Added mtl_ofi_opt.pm.template and updated README with details on the specialization features and how to add additional specialization support. -> Added new opt_common/mtl_ofi_opt_common.pm containing common functions for generating the specialized functions used by all other *.pm modules. -> Added new mtl_ofi.h which includes the definitions for the function symbol table for storing the specialized functions along with the definitions for the initialization functions for the corresponding function pointers. -> Based off the OFI provider capabilities the specialized function pointers are assigned at mtl_ofi_component_init to the corresponding MTL OFI function. -> mca_mtl_ofi_module_t has been updated with the symbol table struct which is assigned at component init. Signed-off-by: Spruit, Neil R <neil.r.spruit@intel.com>
77 строки
2.6 KiB
C
77 строки
2.6 KiB
C
/*
|
|
* Copyright (c) 2013-2018 Intel, Inc. All rights reserved
|
|
*
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#ifndef MTL_OFI_OPT_H
|
|
#define MTL_OFI_OPT_H
|
|
|
|
#include "mtl_ofi.h"
|
|
|
|
BEGIN_C_DECLS
|
|
|
|
#define CQ_DATA_TYPES 2
|
|
#define OMPI_MTL_OFI_SEND_TYPES [CQ_DATA_TYPES]
|
|
#define OMPI_MTL_OFI_ISEND_TYPES [CQ_DATA_TYPES]
|
|
#define OMPI_MTL_OFI_IRECV_TYPES [CQ_DATA_TYPES]
|
|
#define OMPI_MTL_OFI_IPROBE_TYPES [CQ_DATA_TYPES]
|
|
#define OMPI_MTL_OFI_IMPROBE_TYPES [CQ_DATA_TYPES]
|
|
|
|
struct ompi_mtl_ofi_symtable {
|
|
int (*ompi_mtl_ofi_send OMPI_MTL_OFI_SEND_TYPES )
|
|
(struct mca_mtl_base_module_t *mtl,
|
|
struct ompi_communicator_t *comm,
|
|
int dest,
|
|
int tag,
|
|
struct opal_convertor_t *convertor,
|
|
mca_pml_base_send_mode_t mode);
|
|
int (*ompi_mtl_ofi_isend OMPI_MTL_OFI_ISEND_TYPES )
|
|
(struct mca_mtl_base_module_t *mtl,
|
|
struct ompi_communicator_t *comm,
|
|
int dest,
|
|
int tag,
|
|
struct opal_convertor_t *convertor,
|
|
mca_pml_base_send_mode_t mode,
|
|
bool blocking,
|
|
mca_mtl_request_t *mtl_request);
|
|
int (*ompi_mtl_ofi_irecv OMPI_MTL_OFI_IRECV_TYPES )
|
|
(struct mca_mtl_base_module_t *mtl,
|
|
struct ompi_communicator_t *comm,
|
|
int src,
|
|
int tag,
|
|
struct opal_convertor_t *convertor,
|
|
mca_mtl_request_t *mtl_request);
|
|
int (*ompi_mtl_ofi_iprobe OMPI_MTL_OFI_IPROBE_TYPES )
|
|
(struct mca_mtl_base_module_t *mtl,
|
|
struct ompi_communicator_t *comm,
|
|
int src,
|
|
int tag,
|
|
int *flag,
|
|
struct ompi_status_public_t *status);
|
|
int (*ompi_mtl_ofi_improbe OMPI_MTL_OFI_IMPROBE_TYPES )
|
|
(struct mca_mtl_base_module_t *mtl,
|
|
struct ompi_communicator_t *comm,
|
|
int src,
|
|
int tag,
|
|
int *matched,
|
|
struct ompi_message_t **message,
|
|
struct ompi_status_public_t *status);
|
|
};
|
|
|
|
/**
|
|
* MTL OFI specialization function symbol table init
|
|
*/
|
|
void ompi_mtl_ofi_send_symtable_init(struct ompi_mtl_ofi_symtable* sym_table);
|
|
void ompi_mtl_ofi_isend_symtable_init(struct ompi_mtl_ofi_symtable* sym_table);
|
|
void ompi_mtl_ofi_irecv_symtable_init(struct ompi_mtl_ofi_symtable* sym_table);
|
|
void ompi_mtl_ofi_iprobe_symtable_init(struct ompi_mtl_ofi_symtable* sym_table);
|
|
void ompi_mtl_ofi_improbe_symtable_init(struct ompi_mtl_ofi_symtable* sym_table);
|
|
|
|
END_C_DECLS
|
|
|
|
#endif /* MTL_OFI_OPT_H */ |