1
1
This commit was SVN r181.
Этот коммит содержится в:
Tim Woodall 2004-01-09 19:20:50 +00:00
родитель 90eabbbcbd
Коммит dfbdcd8c2e
4 изменённых файлов: 151 добавлений и 29 удалений

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

@ -3,3 +3,32 @@
#
include $(top_srcdir)/config/Makefile.options
noinst_LTLIBRARIES = libpmlb.la
# Source code files
headers = \
fragment.h \
header.h \
recvfrag.h \
request.h \
sendfrag.h \
sendreq.h
libpmlb_la_SOURCES = \
$(headers) \
fragment.c \
recvfrag.c \
request.c \
sendfrag.c
# Conditionally install the header files
if WANT_INSTALL_HEADERS
lamdir = $(includedir)/mfc/mpi/pml/base
lam_HEADERS = $(headers)
else
lamdir = $(includedir)
endif

24
src/mca/mpi/pml/base/pml_base_request.c Обычный файл
Просмотреть файл

@ -0,0 +1,24 @@
/*
* $HEADER$
*/
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "mca/mpi/pml/base/request.h"
lam_class_info_t mca_pml_base_request_cls = {
"mca_pml_base_request_t",
&lam_request_cls,
(class_init_t) mca_pml_base_request_init,
(class_destroy_t) mca_pml_base_request_destroy
};
void mca_pml_base_request_init(mca_pml_base_request_t* req)
{
SUPER_INIT(req, &lam_request_cls);
}
void mca_pml_base_request_destroy(mca_pml_base_request_t* req)
{
SUPER_DESTROY(req, &lam_request_cls);
}

57
src/mca/mpi/pml/base/pml_base_request.h Обычный файл
Просмотреть файл

@ -0,0 +1,57 @@
/*
* $HEADER$
*/
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#ifndef MCA_PML_BASE_REQUEST_H
#define MCA_PML_BASE_REQUEST_H
#include "communicator.h"
#include "datatype.h"
#include "include/request.h"
#include "lam/mem/free_list.h"
#include "mca/mpi/pml/pml.h"
extern lam_class_info_t mca_pml_base_request_cls;
/* MPI request status */
typedef enum {
LAM_STATUS_INVALID = 1,
LAM_STATUS_INITED = 2,
LAM_STATUS_INCOMPLETE = 3,
LAM_STATUS_COMPLETE = 4,
LAM_STATUS_INACTIVE = 5
} mca_pml_request_status_t;
/* MPI request */
typedef struct {
/* base request */
lam_request_t super;
/* peer process - rank w/in this communicator */
int32_t req_peer;
/* user defined tag */
int32_t req_tag;
/* communicator pointer */
lam_communicator_t *req_communicator;
/* pointer to data type */
lam_datatype_t *req_datatype;
/* MPI request status */
mca_pml_request_status_t req_status;
/* type of message - standard,buffered,synchronous,ready,recv */
mca_pml_request_type_t req_type;
/* persistence indicating if the this is a persistent request */
bool req_persistent;
/* flag indicating if MPI is done with this request called */
bool req_mpi_done;
/* flag indicating if the pt-2-pt layer is done with this request */
bool req_p2p_layer_done;
} mca_pml_base_request_t;
void mca_pml_base_request_init(mca_pml_base_request_t*);
void mca_pml_base_request_destroy(mca_pml_base_request_t*);
#endif

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

@ -5,11 +5,10 @@
#ifndef LAM_MCA_PML_H
#define LAM_MCA_PML_H
#include "mca/mca.h"
#include "proc.h"
#include "lam.h"
#include "proc.h"
#include "lam/lfc/list.h"
#include "mca/mca.h"
/*
* PML module functions
@ -17,54 +16,66 @@
typedef int (*mca_pml_query_fn_t)(int *priority);
typedef struct mca_pml_1_0_0 * (*mca_pml_init_1_0_0_fn_t)(
struct lam_proc **procs,
struct lam_proc_t **procs,
int nprocs,
int *max_tag,
int *max_cid
);
/*
* PML types
*/
typedef uint64_t mca_pml_sequence_t;
typedef uint64_t mca_pml_tstamp_t;
typedef lam_dbl_list_t mca_pml_queue_t;
typedef enum {
MCA_PML_REQUEST_TYPE_RECV,
MCA_PML_REQUEST_TYPE_SEND_STANDARD,
MCA_PML_REQUEST_TYPE_SEND_BUFFERED,
MCA_PML_REQUEST_TYPE_SEND_SYNCHRONOUS,
MCA_PML_REQUEST_TYPE_SEND_READY
} mca_pml_request_type_t;
/*
* PML interface functions
*/
typedef enum {
MCA_PTM_REQUEST_TYPE_RECV,
MCA_PTM_REQUEST_TYPE_SEND_STANDARD,
MCA_PTM_REQUEST_TYPE_SEND_BUFFERED,
MCA_PTM_REQUEST_TYPE_SEND_SYNCHRONOUS,
MCA_PTM_REQUEST_TYPE_SEND_READY
} mca_pml_request_type_t;
struct lam_communicator_t;
struct lam_datatype_t;
struct lam_proc_t;
struct lam_request_t;
typedef int (*mca_pml_progress_fn_t)(lam_time_t);
typedef int (*mca_pml_progress_fn_t)(mca_pml_tstamp_t);
typedef int (*mca_pml_isend_fn_t)(
void *buf,
size_t size,
lam_datatype_t *datatype,
struct lam_datatype_t *datatype,
int dest,
int tag,
lam_communicator_t* comm,
struct lam_communicator_t* comm,
mca_pml_request_type_t req_type,
lam_request_t **request
struct lam_request_t **request
);
typedef int (*mci_pma_addprocs_fn_t)(lam_proc_t **procs, int nprocs);
typedef int (*mca_pml_addprocs_fn_t)(lam_proc_t **procs, int nprocs);
/*
* PML module definition.
*/
typedef struct mca_pml_module_1_0_0 {
mca_1_0_0_t mp_meta_info;
struct mca_pml_module_1_0_0_t {
/* pml API function pointers */
mca_1_0_0_t super;
mca_pml_query_fn_t pmlm_query;
mca_pml_init_1_0_0_fn_t pmlm_init;
mca_pml_query_fn_t mp_query;
mca_pml_init_1_0_0_fn_t mp_init;
} mca_pml_module_1_0_0_t;
};
typedef struct mca_pml_module_1_0_0_t mca_pml_module_1_0_0_t;
/*
@ -72,21 +83,22 @@ typedef struct mca_pml_module_1_0_0 {
* provided by a PML.
*/
typedef struct mca_pml_1_0_0 {
struct mca_pml_1_0_0_t {
mca_pml_addprocs_fn_t pml_addprocs;
mca_pml_isend_fn_t pml_isend;
mca_pml_progress_fn_t pml_progress;
} mca_pml_1_0_0_t;
};
typedef struct mca_pml_1_0_0_t mca_pml_1_0_0_t;
/*
* Set the default type to use version 1.1.0 of the PML
*/
typedef mca_pml_module_1_1_0_t mca_pml_t;
typedef mca_pml_1_1_0_t mca_pml_t;
typedef struct mca_pml_module_1_1_0_t mca_pml_module_t;
typedef struct mca_pml_1_1_0_t mca_pml_t;
/*
@ -108,8 +120,8 @@ extern "C" {
* Public variables
*/
extern lam_list_t *mca_pml_base_opened;
extern lam_list_t *mca_pml_base_available;
extern lam_dbl_list_t *mca_pml_base_opened;
extern lam_dbl_list_t *mca_pml_base_available;
/*
* Global instance of array of pointers to lam_ssi_rpi_t. Will