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

📄 mpidpre.h

📁 刚才是说明 现在是安装程序在 LINUX环境下进行编程的MPICH安装文件
💻 H
📖 第 1 页 / 共 2 页
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#ifndef MPIDPRE_H#define MPIDPRE_H#include "mpi.h"#include "mpidconf.h"#include "mpid_datatype.h"#include "mpid_dataloop.h"#include "mpiimpl.h"#ifdef WITH_METHOD_TCP#include "mm_tcp_pre.h"#endif#ifdef WITH_METHOD_SOCKET#include "mm_socket_pre.h"#endif#ifdef WITH_METHOD_SHM#include "mm_shm_pre.h"#endif#ifdef WITH_METHOD_IB#include "mm_ib_pre.h"#endif#ifdef WITH_METHOD_VIA#include "mm_via_pre.h"#endif#ifdef WITH_METHOD_VIA_RDMA#include "mm_via_rdma_pre.h"#endif#ifdef WITH_NEW_METHOD#include "mm_new_pre.h"#endif#ifdef HAVE_WINSOCK2_H#include <winsock2.h>#define MPID_IOV         WSABUF#define MPID_IOV_LEN     len#define MPID_IOV_BUF     buf#else#ifdef HAVE_SYS_UIO_H#include <sys/uio.h>#endif#define MPID_IOV         struct iovec#define MPID_IOV_LEN     iov_len#define MPID_IOV_BUF     iov_base#endif#define MPID_IOV_LIMIT   16/* Buffer type */typedef enum MM_BUFFER_TYPE {    MM_NULL_BUFFER,    MM_SIMPLE_BUFFER,    MM_TMP_BUFFER,    MM_VEC_BUFFER,#ifdef WITH_METHOD_SHM    MM_SHM_BUFFER,#endif#ifdef WITH_METHOD_IB    MM_IB_BUFFER,#endif#ifdef WITH_METHOD_VIA    MM_VIA_BUFFER,#endif#ifdef WITH_METHOD_VIA_RDMA    MM_VIA_RDMA_BUFFER,#endif#ifdef WITH_METHOD_NEW    MM_NEW_METHOD_BUFFER,#endif    MM_END_MARKER_BUFFER} MM_BUFFER_TYPE;/* Packet header type */typedef enum {     MPID_INVALID_PKT,    MPID_EAGER_PKT,    MPID_RNDV_REQUEST_TO_SEND_PKT,    MPID_RNDV_CLEAR_TO_SEND_PKT,    MPID_RNDV_DATA_PKT,    MPID_RDMA_ACK_PKT,    MPID_RDMA_DATA_ACK_PKT,    MPID_RDMA_REQUEST_DATA_ACK_PKT,    MPID_CONTEXT_PKT,    MPID_ACK_PKT} MPID_Packet_type;/* Communication agent request type */typedef int MM_CAR_TYPE;#define MM_NULL_CAR      ( 0x0 )#define MM_HEAD_CAR      ( 0x1 )#define MM_READ_CAR      ( 0x1 << 1 )#define MM_WRITE_CAR     ( 0x1 << 2 )#define MM_PACKER_CAR    ( 0x1 << 3 )#define MM_UNPACKER_CAR  ( 0x1 << 4 )/* packet definitions */typedef struct MPID_Header_pkt{    MPID_Packet_type type;    int context;    int tag;    int src;    int size;    struct MM_Car *sender_car_ptr;} MPID_Header_pkt;typedef struct MPID_Context_pkt{    MPID_Packet_type type;    int rank;    int context;    char ack_in, ack_out;} MPID_Context_pkt;typedef struct MPID_Rndv_clear_to_send_pkt{    MPID_Packet_type type;    struct MM_Car *sender_car_ptr;    struct MM_Car *receiver_car_ptr;} MPID_Rndv_clear_to_send_pkt;typedef struct MPID_Rndv_data_pkt{    MPID_Packet_type type;    int size;    struct MM_Car *receiver_car_ptr;} MPID_Rndv_data_pkt;#ifdef WITH_VIA_RDMA_METHODtypedef struct MPID_Rdma_ack_pkt{    MPID_Packet_type type;} MPID_Rdma_ack_pkt;typedef struct MPID_Rdma_data_ack_pkt{    MPID_Packet_type type;} MPID_Rdma_data_ack_pkt;typedef struct MPID_Rdma_request_data_ack_pkt{    MPID_Packet_type type;} MPID_Rdma_request_data_ack_pkt;#endiftypedef struct MPID_Packet{    union MPID_Packet_contents    {	MPID_Packet_type type;	MPID_Header_pkt hdr;	MPID_Context_pkt context;	MPID_Rndv_clear_to_send_pkt cts;	MPID_Rndv_data_pkt rdata;#ifdef WITH_VIA_RDMA_METHOD	MPID_Rdma_ack_pkt rdma_ack;	MPID_Rdma_data_ack_pkt rdma_data_ack;	MPID_Rdma_request_data_ack_pkt rdma_req_data_ack;#endif    } u;} MPID_Packet;typedef union MM_Segment_buffer{    MM_BUFFER_TYPE type;    /*    struct mm_segment_tmp    {	MM_BUFFER_TYPE type;	void *buf[2];	int len[2];	int cur_buf;	int num_read;	int min_num_written;    } tmp;    */    struct mm_segment_simple    {	MM_BUFFER_TYPE type;	void *buf;	int len;	int num_read;    } simple;    struct mm_segment_tmp    {	MM_BUFFER_TYPE type;	void *buf;	int len;	int num_read;    } tmp;    struct mm_segment_vec    {	MM_BUFFER_TYPE type;	MPID_IOV vec[MPID_IOV_LIMIT];	int vec_size;	int num_read;	int first, last, segment_last;	int buf_size;	int num_cars, num_cars_outstanding;    } vec;#ifdef WITH_METHOD_SHM    struct mm_segment_shm    {	MM_BUFFER_TYPE type;	void *shm_ptr;	int num_read;    } shm;#endif#ifdef WITH_METHOD_IB    struct mm_segment_ib    {	MM_BUFFER_TYPE type;	void *mr_ptr;	int num_read;    } ib;#endif#ifdef WITH_METHOD_VIA    struct mm_segment_via    {	MM_BUFFER_TYPE type;	void *descriptor_ptr;	int num_descriptors;    } via;#endif#ifdef WITH_METHOD_VIA_RDMA    struct mm_segment_via_rdma    {	MM_BUFFER_TYPE type;	void *descriptor_ptr;	int num_descriptors;    } via_rdma;#endif#ifdef WITH_METHOD_NEW    struct mm_segment_new    {	MM_BUFFER_TYPE type;    }#endif} MM_Segment_buffer;typedef struct MM_Car_msg_header{    MPID_Packet pkt;    MM_Segment_buffer buf;} MM_Car_msg_header;typedef struct MM_Car_data_unpacker{    union mm_car_data_unpacker_buf    {	struct car_unpacker_simple	{	    int first;	    int last;	} simple;	struct car_unpacker_tmp	{	    int first;	    int last;	} tmp;	/* unpacker method never reads	struct car_unpacker_vec_read	{	} vec_read;	*/	struct car_unpacker_vec_write	{	    int num_read_copy;	    MPID_IOV vec[MPID_IOV_LIMIT];	    int vec_size;	    int total_num_written;	    int cur_num_written;	    int cur_index;	    int num_written_at_cur_index;	} vec_write;#ifdef WITH_METHOD_SHM	struct car_unpacker_shm	{	    int num_read;	} shm;#endif#ifdef WITH_METHOD_VIA	struct car_unpacker_via	{	    int num_read;	} via;#endif#ifdef WITH_METHOD_VIA_RDMA	struct car_unpacker_via_rdma	{	    int num_read;	} via_rdma;#endif    } buf;} MM_Car_data_unpacker;typedef union MM_Car_data {    struct car_packer_data    {	int first;	int last;    } packer;    MM_Car_data_unpacker unpacker;#ifdef WITH_METHOD_SHM    MM_Car_data_shm shm;#endif#ifdef WITH_METHOD_TCP    MM_Car_data_tcp tcp;#endif#ifdef WITH_METHOD_SOCKET    MM_Car_data_socket socket;#endif#ifdef WITH_METHOD_IB    MM_Car_data_ib ib;#endif#ifdef WITH_METHOD_VIA    MM_Car_data_via via;#endif#ifdef WITH_METHOD_VIA_RDMA    MM_Car_data_via_rdma via_rdma;#endif#ifdef WITH_METHOD_NEW    MM_Car_data_new new;#endif} MM_Car_data;/* Communication agent/action request */typedef struct MM_Car{    int freeme;    struct MPID_Request *request_ptr;    union MM_Segment_buffer *buf_ptr;    struct MPIDI_VC *vc_ptr;    int src, dest;    MM_CAR_TYPE type;    MM_Car_data data;    MM_Car_msg_header msg_header;    struct MM_Car *next_ptr, *opnext_ptr, *qnext_ptr, *vcqnext_ptr;} MM_Car;/* multi-method segment */typedef struct MM_Segment{    int tag;    union user_buf {	const void *send;	void *recv;    } user_buf;    int count;    MPI_Datatype dtype;    int size;    int first;    int last;    MPID_Segment segment;    MM_Car *write_list;    MM_Car wcar[2];    MM_Car rcar[2];    int op_valid;

⌨️ 快捷键说明

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