mpidpkt.h

来自「fortran并行计算包」· C头文件 代码 · 共 297 行

H
297
字号
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#ifndef HAVE_MPIDPKT_H#define HAVE_MPIDPKT_H/* Enable the use of data within the message packet for small messages */#define USE_EAGER_SHORT#define MPIDI_EAGER_SHORT_INTS 4#define MPIDI_EAGER_SHORT_SIZE 16/* * MPIDI_CH3_Pkt_type_t * */typedef enum MPIDI_CH3_Pkt_type{    MPIDI_CH3_PKT_EAGER_SEND = 0,#if defined(USE_EAGER_SHORT)    MPIDI_CH3_PKT_EAGERSHORT_SEND,#endif /* defined(USE_EAGER_SHORT) */    MPIDI_CH3_PKT_EAGER_SYNC_SEND,    /* FIXME: no sync eager */    MPIDI_CH3_PKT_EAGER_SYNC_ACK,    MPIDI_CH3_PKT_READY_SEND,    MPIDI_CH3_PKT_RNDV_REQ_TO_SEND,    MPIDI_CH3_PKT_RNDV_CLR_TO_SEND,    MPIDI_CH3_PKT_RNDV_SEND,          /* FIXME: should be stream put */    MPIDI_CH3_PKT_CANCEL_SEND_REQ,    MPIDI_CH3_PKT_CANCEL_SEND_RESP,    MPIDI_CH3_PKT_PUT,    MPIDI_CH3_PKT_GET,    MPIDI_CH3_PKT_GET_RESP,    MPIDI_CH3_PKT_ACCUMULATE,    MPIDI_CH3_PKT_LOCK,    MPIDI_CH3_PKT_LOCK_GRANTED,    MPIDI_CH3_PKT_PT_RMA_DONE,    MPIDI_CH3_PKT_LOCK_PUT_UNLOCK, /* optimization for single puts */    MPIDI_CH3_PKT_LOCK_GET_UNLOCK, /* optimization for single gets */    MPIDI_CH3_PKT_LOCK_ACCUM_UNLOCK, /* optimization for single accumulates */    MPIDI_CH3_PKT_FLOW_CNTL_UPDATE,  /* FIXME: Unused */    MPIDI_CH3_PKT_CLOSE,    MPIDI_CH3_PKT_END_CH3    /* The channel can define additional types by defining the value       MPIDI_CH3_PKT_ENUM */# if defined(MPIDI_CH3_PKT_ENUM)    , MPIDI_CH3_PKT_ENUM# endif        , MPIDI_CH3_PKT_END_ALL}MPIDI_CH3_Pkt_type_t;typedef struct MPIDI_CH3_Pkt_send{    MPIDI_CH3_Pkt_type_t type;  /* XXX - uint8_t to conserve space ??? */    MPIDI_Message_match match;    MPI_Request sender_req_id;	/* needed for ssend and send cancel */    MPIDI_msg_sz_t data_sz;#if defined(MPID_USE_SEQUENCE_NUMBERS)    MPID_Seqnum_t seqnum;#endif    }MPIDI_CH3_Pkt_send_t;/* NOTE: Normal and synchronous eager sends, as well as all ready-mode sends,    use the same structure but have a different type value. */typedef MPIDI_CH3_Pkt_send_t MPIDI_CH3_Pkt_eager_send_t;typedef MPIDI_CH3_Pkt_send_t MPIDI_CH3_Pkt_eager_sync_send_t;typedef MPIDI_CH3_Pkt_send_t MPIDI_CH3_Pkt_ready_send_t;#if defined(USE_EAGER_SHORT)typedef struct MPIDI_CH3_Pkt_eagershort_send{    MPIDI_CH3_Pkt_type_t type;  /* XXX - uint8_t to conserve space ??? */    MPIDI_Message_match match;    MPIDI_msg_sz_t data_sz;#if defined(MPID_USE_SEQUENCE_NUMBERS)    MPID_Seqnum_t seqnum;#endif    int  data[MPIDI_EAGER_SHORT_INTS];    /* FIXME: Experimental for now */}MPIDI_CH3_Pkt_eagershort_send_t;#endif /* defined(USE_EAGER_SHORT) */typedef struct MPIDI_CH3_Pkt_eager_sync_ack{    MPIDI_CH3_Pkt_type_t type;    MPI_Request sender_req_id;}MPIDI_CH3_Pkt_eager_sync_ack_t;typedef MPIDI_CH3_Pkt_send_t MPIDI_CH3_Pkt_rndv_req_to_send_t;typedef struct MPIDI_CH3_Pkt_rndv_clr_to_send{    MPIDI_CH3_Pkt_type_t type;    MPI_Request sender_req_id;    MPI_Request receiver_req_id;}MPIDI_CH3_Pkt_rndv_clr_to_send_t;typedef struct MPIDI_CH3_Pkt_rndv_send{    MPIDI_CH3_Pkt_type_t type;    MPI_Request receiver_req_id;}MPIDI_CH3_Pkt_rndv_send_t;typedef struct MPIDI_CH3_Pkt_cancel_send_req{    MPIDI_CH3_Pkt_type_t type;    MPIDI_Message_match match;    MPI_Request sender_req_id;}MPIDI_CH3_Pkt_cancel_send_req_t;typedef struct MPIDI_CH3_Pkt_cancel_send_resp{    MPIDI_CH3_Pkt_type_t type;    MPI_Request sender_req_id;    int ack;}MPIDI_CH3_Pkt_cancel_send_resp_t;#if defined(MPIDI_CH3_PKT_DEFS)MPIDI_CH3_PKT_DEFS#endiftypedef struct MPIDI_CH3_Pkt_put{    MPIDI_CH3_Pkt_type_t type;    void *addr;    int count;    MPI_Datatype datatype;    int dataloop_size;   /* for derived datatypes */    MPI_Win target_win_handle; /* Used in the last RMA operation in each                               * epoch for decrementing rma op counter in                               * active target rma and for unlocking window                                * in passive target rma. Otherwise set to NULL*/    MPI_Win source_win_handle; /* Used in the last RMA operation in an                               * epoch in the case of passive target rma                               * with shared locks. Otherwise set to NULL*/}MPIDI_CH3_Pkt_put_t;typedef struct MPIDI_CH3_Pkt_get{    MPIDI_CH3_Pkt_type_t type;    void *addr;    int count;    MPI_Datatype datatype;    int dataloop_size;   /* for derived datatypes */    MPI_Request request_handle;    MPI_Win target_win_handle; /* Used in the last RMA operation in each                               * epoch for decrementing rma op counter in                               * active target rma and for unlocking window                                * in passive target rma. Otherwise set to NULL*/    MPI_Win source_win_handle; /* Used in the last RMA operation in an                               * epoch in the case of passive target rma                               * with shared locks. Otherwise set to NULL*/}MPIDI_CH3_Pkt_get_t;typedef struct MPIDI_CH3_Pkt_get_resp{    MPIDI_CH3_Pkt_type_t type;    MPI_Request request_handle;}MPIDI_CH3_Pkt_get_resp_t;typedef struct MPIDI_CH3_Pkt_accum{    MPIDI_CH3_Pkt_type_t type;    void *addr;    int count;    MPI_Datatype datatype;    int dataloop_size;   /* for derived datatypes */    MPI_Op op;    MPI_Win target_win_handle; /* Used in the last RMA operation in each                               * epoch for decrementing rma op counter in                               * active target rma and for unlocking window                                * in passive target rma. Otherwise set to NULL*/    MPI_Win source_win_handle; /* Used in the last RMA operation in an                               * epoch in the case of passive target rma                               * with shared locks. Otherwise set to NULL*/}MPIDI_CH3_Pkt_accum_t;typedef struct MPIDI_CH3_Pkt_lock{    MPIDI_CH3_Pkt_type_t type;    int lock_type;    MPI_Win target_win_handle;    MPI_Win source_win_handle;}MPIDI_CH3_Pkt_lock_t;typedef struct MPIDI_CH3_Pkt_lock_granted{    MPIDI_CH3_Pkt_type_t type;    MPI_Win source_win_handle;}MPIDI_CH3_Pkt_lock_granted_t;typedef MPIDI_CH3_Pkt_lock_granted_t MPIDI_CH3_Pkt_pt_rma_done_t;typedef struct MPIDI_CH3_Pkt_lock_put_unlock{    MPIDI_CH3_Pkt_type_t type;    MPI_Win target_win_handle;    MPI_Win source_win_handle;    int lock_type;    void *addr;    int count;    MPI_Datatype datatype;}MPIDI_CH3_Pkt_lock_put_unlock_t;typedef struct MPIDI_CH3_Pkt_lock_get_unlock{    MPIDI_CH3_Pkt_type_t type;    MPI_Win target_win_handle;    MPI_Win source_win_handle;    int lock_type;    void *addr;    int count;    MPI_Datatype datatype;    MPI_Request request_handle;}MPIDI_CH3_Pkt_lock_get_unlock_t;typedef struct MPIDI_CH3_Pkt_lock_accum_unlock{    MPIDI_CH3_Pkt_type_t type;    MPI_Win target_win_handle;    MPI_Win source_win_handle;    int lock_type;    void *addr;    int count;    MPI_Datatype datatype;    MPI_Op op;}MPIDI_CH3_Pkt_lock_accum_unlock_t;typedef struct MPIDI_CH3_Pkt_close{    MPIDI_CH3_Pkt_type_t type;    int ack;}MPIDI_CH3_Pkt_close_t;typedef union MPIDI_CH3_Pkt{    MPIDI_CH3_Pkt_type_t type;    MPIDI_CH3_Pkt_eager_send_t eager_send;#if defined(USE_EAGER_SHORT)    MPIDI_CH3_Pkt_eagershort_send_t eagershort_send;#endif /* defined(USE_EAGER_SHORT) */    MPIDI_CH3_Pkt_eager_sync_send_t eager_sync_send;    MPIDI_CH3_Pkt_eager_sync_ack_t eager_sync_ack;    MPIDI_CH3_Pkt_eager_send_t ready_send;    MPIDI_CH3_Pkt_rndv_req_to_send_t rndv_req_to_send;    MPIDI_CH3_Pkt_rndv_clr_to_send_t rndv_clr_to_send;    MPIDI_CH3_Pkt_rndv_send_t rndv_send;    MPIDI_CH3_Pkt_cancel_send_req_t cancel_send_req;    MPIDI_CH3_Pkt_cancel_send_resp_t cancel_send_resp;    MPIDI_CH3_Pkt_put_t put;    MPIDI_CH3_Pkt_get_t get;    MPIDI_CH3_Pkt_get_resp_t get_resp;    MPIDI_CH3_Pkt_accum_t accum;    MPIDI_CH3_Pkt_lock_t lock;    MPIDI_CH3_Pkt_lock_granted_t lock_granted;    MPIDI_CH3_Pkt_pt_rma_done_t pt_rma_done;        MPIDI_CH3_Pkt_lock_put_unlock_t lock_put_unlock;    MPIDI_CH3_Pkt_lock_get_unlock_t lock_get_unlock;    MPIDI_CH3_Pkt_lock_accum_unlock_t lock_accum_unlock;    MPIDI_CH3_Pkt_close_t close;# if defined(MPIDI_CH3_PKT_DECL)    MPIDI_CH3_PKT_DECL# endif}MPIDI_CH3_Pkt_t;#if defined(MPID_USE_SEQUENCE_NUMBERS)typedef struct MPIDI_CH3_Pkt_send_container{    MPIDI_CH3_Pkt_send_t pkt;    struct MPIDI_CH3_Pkt_send_container_s * next;}MPIDI_CH3_Pkt_send_container_t;#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?