⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpidpre.h

📁 mpi并行计算的c++代码 可用vc或gcc编译通过 可以用来搭建并行计算试验环境
💻 H
📖 第 1 页 / 共 2 页
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#if !defined(MPICH_MPIDPRE_H_INCLUDED)#define MPICH_MPIDPRE_H_INCLUDED#include "mpidi_ch3_conf.h"#ifdef HAVE_ASSERT_H#include <assert.h>#endif#if defined(HAVE_SYS_TYPES_H)#include <sys/types.h>#endif#include "mpid_dataloop.h"struct MPID_Datatype;typedef MPI_Aint MPIDI_msg_sz_t;#define MPIDI_MSG_SZ_FMT "%d"/* Include definitions from the channel which must exist before items in this file (mpidimpl.h) or the file it includes   (mpiimpl.h) can be defined. */#include "mpidi_ch3_pre.h"#if defined (MPIDI_CH3_MSGS_UNORDERED)#define MPID_USE_SEQUENCE_NUMBERS#endif#if defined(MPID_USE_SEQUENCE_NUMBERS)typedef unsigned long MPID_Seqnum_t;#endif#include "mpichconf.h"typedef struct MPIDI_Message_match{    int32_t tag;    int16_t rank;    int16_t context_id;}MPIDI_Message_match;#define MPIDI_TAG_UB (0x7fffffff)/* * MPIDI_CH3_Pkt_type_t * */typedef enum MPIDI_CH3_Pkt_type{    MPIDI_CH3_PKT_EAGER_SEND = 0,    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# if defined(MPIDI_CH3_PKT_ENUM)    , MPIDI_CH3_PKT_ENUM# endif    }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;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;    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/*

⌨️ 快捷键说明

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