1
1

Merge pull request #6399 from hppritcha/topic/excise_ofi_rml

rml/ofi: remove
Этот коммит содержится в:
Howard Pritchard 2019-02-21 08:44:07 -07:00 коммит произвёл GitHub
родитель 83cb9ca51e 55915c3885
Коммит 7bb728b77a
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 0 добавлений и 2677 удалений

Просмотреть файл

@ -1,53 +0,0 @@
#
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2004-2005 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2009 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2015-2017 Intel, Inc. All rights reserved.
# Copyright (c) 2017 Los Alamos National Security, LLC. All rights
# reserved.
# Copyright (c) 2017 IBM Corporation. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
AM_CPPFLAGS = $(opal_common_ofi_CPPFLAGS)
sources = \
rml_ofi.h \
rml_ofi_request.h \
rml_ofi_component.c \
rml_ofi_send.c
# Make the output library in this directory, and name it either
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
# (for static builds).
if MCA_BUILD_orte_rml_ofi_DSO
component_noinst =
component_install = mca_rml_ofi.la
else
component_noinst = libmca_rml_ofi.la
component_install =
endif
mcacomponentdir = $(ortelibdir)
mcacomponent_LTLIBRARIES = $(component_install)
mca_rml_ofi_la_SOURCES = $(sources)
mca_rml_ofi_la_LDFLAGS = -module -avoid-version
mca_rml_ofi_la_LIBADD = $(top_builddir)/orte/lib@ORTE_LIB_PREFIX@open-rte.la \
$(OPAL_TOP_BUILDDIR)/opal/mca/common/ofi/lib@OPAL_LIB_PREFIX@mca_common_ofi.la
noinst_LTLIBRARIES = $(component_noinst)
libmca_rml_ofi_la_SOURCES = $(sources)
libmca_rml_ofi_la_LDFLAGS = -module -avoid-version

Просмотреть файл

@ -1,31 +0,0 @@
# -*- shell-script -*-
#
# Copyright (c) 2013-2014 Intel, Inc. All rights reserved
#
# Copyright (c) 2014-2015 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2017 Los Alamos National Security, LLC. All rights
# reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# MCA_orte_rml_ofi_POST_CONFIG(will_build)
# ----------------------------------------
# Only require the tag if we're actually going to be built
# MCA_mtl_ofi_CONFIG([action-if-can-compile],
# [action-if-cant-compile])
# ------------------------------------------------
AC_DEFUN([MCA_orte_rml_ofi_CONFIG],[
AC_CONFIG_FILES([orte/mca/rml/ofi/Makefile])
# ensure we already ran the common OFI libfabric config
AC_REQUIRE([MCA_opal_common_ofi_CONFIG])
AS_IF([test "$opal_common_ofi_happy" = "yes"],
[$1],
[$2])
])dnl

Просмотреть файл

@ -1,213 +0,0 @@
/*
* Copyright (c) 2015 Intel, Inc. All rights reserved
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#ifndef MCA_RML_OFI_RML_OFI_H
#define MCA_RML_OFI_RML_OFI_H
#include "orte_config.h"
#include "opal/dss/dss_types.h"
#include "opal/mca/event/event.h"
#include "opal/mca/pmix/pmix.h"
#include "orte/mca/rml/base/base.h"
#include <rdma/fabric.h>
#include <rdma/fi_cm.h>
#include <rdma/fi_domain.h>
#include <rdma/fi_endpoint.h>
#include <rdma/fi_errno.h>
#include <rdma/fi_tagged.h>
#include "rml_ofi_request.h"
/** the maximum open OFI ofi_prov - assuming system will have no more than 20 transports*/
#define MAX_OFI_PROVIDERS 40
#define RML_OFI_PROV_ID_INVALID 0xFF
/** RML/OFI key values **/
/* (char*) ofi socket address (type IN) of the node process is running on */
#define OPAL_RML_OFI_FI_SOCKADDR_IN "rml.ofi.fisockaddrin"
/* (char*) ofi socket address (type PSM) of the node process is running on */
#define OPAL_RML_OFI_FI_ADDR_PSMX "rml.ofi.fiaddrpsmx"
// MULTI_BUF_SIZE_FACTOR defines how large the multi recv buffer will be.
// In order to use FI_MULTI_RECV feature efficiently, we need to have a
// large recv buffer so that we don't need to repost the buffer often to
// get the remaining data when the buffer is full
#define MULTI_BUF_SIZE_FACTOR 128
#define MIN_MULTI_BUF_SIZE (1024 * 1024)
#define OFIADDR "ofiaddr"
#define CLOSE_FID(fd) \
do { \
int _ret = 0; \
if (0 != (fd)) { \
_ret = fi_close(&(fd)->fid); \
fd = NULL; \
if (0 != _ret) { \
opal_output_verbose(10,orte_rml_base_framework.framework_output, \
" %s - fi_close failed with error- %d", \
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),ret); \
} \
} \
} while (0);
#define RML_OFI_RETRY_UNTIL_DONE(FUNC) \
do { \
do { \
ret = FUNC; \
if(OPAL_LIKELY(0 == ret)) {break;} \
} while(-FI_EAGAIN == ret); \
} while(0);
BEGIN_C_DECLS
struct orte_rml_ofi_module_t;
/** This structure will hold the ep and all ofi objects for each transport
and also the corresponding fi_info
**/
typedef struct {
/** ofi provider ID **/
uint8_t ofi_prov_id;
/** fi_info for this transport */
struct fi_info *fabric_info;
/** Fabric Domain handle */
struct fid_fabric *fabric;
/** Access Domain handle */
struct fid_domain *domain;
/** Address vector handle */
struct fid_av *av;
/** Completion queue handle */
struct fid_cq *cq;
/** Endpoint to communicate on */
struct fid_ep *ep;
/** Endpoint name */
char ep_name[FI_NAME_MAX];
/** Endpoint name length */
size_t epnamelen;
/** OFI memory region */
struct fid_mr *mr_multi_recv;
/** buffer for tx and rx */
void *rxbuf;
uint64_t rxbuf_size;
/* event,fd associated with the cq */
int fd;
/*event associated with progress fn */
opal_event_t progress_event;
bool progress_ev_active;
struct fi_context rx_ctx1;
} ofi_transport_ofi_prov_t;
struct orte_rml_ofi_module_t {
orte_rml_base_module_t api;
/** current ofi transport id the component is using, this will be initialised
** in the open_ofi_prov() call **/
int cur_transport_id;
/** Fabric info structure of all supported transports in system **/
struct fi_info *fi_info_list;
/** OFI ep and corr fi_info for all the transports (ofi_providers) **/
ofi_transport_ofi_prov_t ofi_prov[MAX_OFI_PROVIDERS];
size_t min_ofi_recv_buf_sz;
/** "Any source" address */
fi_addr_t any_addr;
/** number of ofi providers currently opened **/
uint8_t ofi_prov_open_num;
/** Unique message id for every message that is fragmented to be sent over OFI **/
uint32_t cur_msgid;
/* hashtable stores the peer addresses */
opal_hash_table_t peers;
opal_list_t recv_msg_queue_list;
opal_list_t queued_routing_messages;
opal_event_t *timer_event;
struct timeval timeout;
} ;
typedef struct orte_rml_ofi_module_t orte_rml_ofi_module_t;
/* For every first send initiated to new peer
* select the peer provider, peer ep-addr,
* local provider and populate in orte_rml_ofi_peer_t instance.
* Insert this in hash table.
* */
typedef struct {
opal_object_t super;
char* ofi_prov_name; /* peer (dest) provider chosen */
void* ofi_ep; /* peer (dest) ep chosen */
size_t ofi_ep_len; /* peer (dest) ep length */
uint8_t src_prov_id; /* index of the local (src) provider used for this peer */
} orte_rml_ofi_peer_t;
OBJ_CLASS_DECLARATION(orte_rml_ofi_peer_t);
ORTE_MODULE_DECLSPEC extern orte_rml_component_t mca_rml_ofi_component;
extern orte_rml_ofi_module_t orte_rml_ofi;
int orte_rml_ofi_send_buffer_nb(struct orte_rml_base_module_t *mod,
orte_process_name_t* peer,
struct opal_buffer_t* buffer,
orte_rml_tag_t tag,
orte_rml_buffer_callback_fn_t cbfunc,
void* cbdata);
int orte_rml_ofi_send_nb(struct orte_rml_base_module_t *mod,
orte_process_name_t* peer,
struct iovec* iov,
int count,
orte_rml_tag_t tag,
orte_rml_callback_fn_t cbfunc,
void* cbdata);
/****************** INTERNAL OFI Functions*************/
void free_ofi_prov_resources( int ofi_prov_id);
void print_provider_list_info (struct fi_info *fi );
void print_provider_info (struct fi_info *cur_fi );
int cq_progress_handler(int sd, short flags, void *cbdata);
int get_ofi_prov_id( opal_list_t *attributes);
/** Send callback */
int orte_rml_ofi_send_callback(struct fi_cq_data_entry *wc,
orte_rml_ofi_request_t*);
/** Error callback */
int orte_rml_ofi_error_callback(struct fi_cq_err_entry *error,
orte_rml_ofi_request_t*);
/* OFI Recv handler */
int orte_rml_ofi_recv_handler(struct fi_cq_data_entry *wc, uint8_t ofi_prov_id);
bool user_override(void);
END_C_DECLS
#endif

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,137 +0,0 @@
/*
* Copyright (c) 2015 Intel, Inc. All rights reserved
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#ifndef ORTE_RML_OFI_REQUEST_H
#define ORTE_RML_OFI_REQUEST_H
#define TO_OFI_REQ(_ptr_ctx) \
container_of((_ptr_ctx), orte_rml_ofi_request_t, ctx)
typedef enum {
ORTE_RML_OFI_SEND,
ORTE_RML_OFI_RECV,
ORTE_RML_OFI_ACK,
ORTE_RML_OFI_PROBE
} orte_rml_ofi_request_type_t;
/* orte_rml_ofi_msg_header_t contains the header information for the message being sent.
The header and data is passed on to the destination. The destination will re-construct the
orte_rml_sent_t struct once it receives this header and data.This header has the required information
to construct the orte_rml_sent_t struct and also if the message is split into packets,
then the packet information - total number of packets and the current packet number.
*/
struct orte_rml_ofi_msg_header_t{
opal_process_name_t origin; // originator process id from the send message
opal_process_name_t dst; // Destination process id from the send message
uint32_t seq_num; // seq_num from the send message
orte_rml_tag_t tag; // tag from the send message
uint32_t msgid; // unique msgid added by ofi plugin to keep track of fragmented msgs
uint32_t tot_pkts; // total packets this msg will be fragmented into by ofi plugin
uint32_t cur_pkt_num; // current packet number
};
typedef struct orte_rml_ofi_msg_header_t orte_rml_ofi_msg_header_t;
/*
orte_rml_ofi_pkts_t defines the packets in the message. Each packet contains header information
and the data. Create a list of packets to hold the entire message.
*/
typedef struct {
//list_item_t
opal_list_item_t super;
/* header + data size */
size_t pkt_size;
//header + data
void *data;
}orte_rml_ofi_send_pkt_t;
OBJ_CLASS_DECLARATION(orte_rml_ofi_send_pkt_t);
/*
orte_rml_ofi_recv_pkt_t defines the packets in the receiving end of message.
Each packet contains the packet number and the data.
Create a list of packets to hold the entire message.
*/
typedef struct {
//list_item_t
opal_list_item_t super;
/* current packet number */
uint32_t cur_pkt_num;
/*data size */
size_t pkt_size;
//data
void *data;
}orte_rml_ofi_recv_pkt_t;
OBJ_CLASS_DECLARATION(orte_rml_ofi_recv_pkt_t);
/*
orte_rml_ofi_request_t holds the send request (orte_rml_send_t)
*/
typedef struct {
opal_object_t super;
/** OFI context */
struct fi_context ctx;
orte_rml_send_t *send;
/** OFI provider_id the request will use - this is
* the reference to element into the orte_rml_ofi.ofi_prov[] **/
uint8_t ofi_prov_id;
/** OFI Request type */
orte_rml_ofi_request_type_t type;
/** Completion count used by blocking and/or synchronous operations */
volatile int completion_count;
/** Reference to the RML used to lookup */
/* source of an ANY_SOURCE Recv */
struct orte_rml_base_module_t* rml;
/** header being sent **/
orte_rml_ofi_msg_header_t hdr;
/** Pack buffer */
void *data_blob;
/** Pack buffer size */
size_t length;
/** Header and data in a list of Packets orte_rml_ofi_send_pkt_t */
opal_list_t pkt_list;
} orte_rml_ofi_request_t;
OBJ_CLASS_DECLARATION(orte_rml_ofi_request_t);
/* This will hold all the pckts received at the destination.
Each entry will be indexed by [sender,msgid] and will have
all the packets for that msgid and sender.
*/
typedef struct {
opal_list_item_t super; //list_item_t
uint32_t msgid; // unique msgid added by ofi plugin to keep track of fragmented msgs
opal_process_name_t sender; // originator process id from the send message
uint32_t tot_pkts; // total packets this msg will be fragmented into by ofi plugin
uint32_t pkt_recd; // current packet number
opal_list_t pkt_list; // list holding Packets in this msg of type orte_rml_ofi_recv_pkt_t
} ofi_recv_msg_queue_t;
OBJ_CLASS_DECLARATION( ofi_recv_msg_queue_t);
/* define an object for transferring send requests to the event lib */
typedef struct {
opal_object_t super;
opal_event_t ev;
orte_rml_send_t send;
/* ofi provider id */
int ofi_prov_id;
} ofi_send_request_t;
OBJ_CLASS_DECLARATION(ofi_send_request_t);
#endif

Разница между файлами не показана из-за своего большого размера Загрузить разницу