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

📄 mx_module_impl.h

📁 fortran并行计算包
💻 H
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* *  (C) 2006 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#ifndef MX_MODULE_IMPL_H#define MX_MODULE_IMPL_H#include <myriexpress.h>#include "mpid_nem_impl.h"#define MPID_NEM_CELL_LEN_MX          (32*1024)#define MPID_NEM_CELL_PAYLOAD_LEN_MX  (MPID_NEM_CELL_LEN_MX - sizeof(void *))extern uint32_t               MPID_nem_module_mx_filter;extern mx_endpoint_t          MPID_nem_module_mx_local_endpoint;extern mx_endpoint_addr_t    *MPID_nem_module_mx_endpoints_addr;extern int                    MPID_nem_module_mx_send_outstanding_request_num;extern int                    MPID_nem_module_mx_pendings_sends;extern int                    MPID_nem_module_mx_recv_outstanding_request_num;extern int                    MPID_nem_module_mx_pendings_recvs;extern int                   *MPID_nem_module_mx_pendings_recvs_array;/* The vc provides a generic buffer in which network modules can store   private fields This removes all dependencies from the VC struction   on the network module, facilitating dynamic module loading. */typedef struct {    unsigned int       remote_endpoint_id; /* uint32_t equivalent */    unsigned long long remote_nic_id;      /* uint64_t equivalent */} MPID_nem_mx_module_vc_area;/* accessor macro to private fields in VC */#define VC_FIELD(vc, field) (((MPID_nem_mx_module_vc_area *)((MPIDI_CH3I_VC *)(vc)->channel_private)->netmod_area.padding)->field)typedef struct MPID_nem_mx_cell{      struct MPID_nem_mx_cell *next;   mx_request_t             mx_request;    } MPID_nem_mx_cell_t, *MPID_nem_mx_cell_ptr_t;typedef struct MPID_nem_mx_req_queue{      MPID_nem_mx_cell_ptr_t head;   MPID_nem_mx_cell_ptr_t tail;} MPID_nem_mx_req_queue_t, *MPID_nem_mx_req_queue_ptr_t;#define MPID_NEM_MX_CELL_TO_REQUEST(cellp) (&((cellp)->mx_request))#define MPID_NEM_MX_REQ                    64#define MPID_NEM_MX_MATCH                  (UINT64_C(0x666))#define MPID_NEM_MX_MASK                   (UINT64_C(0xffffffffffffffff))static inline intMPID_nem_mx_req_queue_empty ( MPID_nem_mx_req_queue_ptr_t  qhead ){      return qhead->head == NULL;}static inline void MPID_nem_mx_req_queue_enqueue (MPID_nem_mx_req_queue_ptr_t qhead, MPID_nem_mx_cell_ptr_t element){      MPID_nem_mx_cell_ptr_t prev = qhead->tail;      if (prev == NULL)     {		qhead->head = element;     }      else     {		prev->next = element;     }      qhead->tail = element;}static inline voidMPID_nem_mx_req_queue_dequeue (MPID_nem_mx_req_queue_ptr_t qhead, MPID_nem_mx_cell_ptr_t *e){      register MPID_nem_mx_cell_ptr_t _e = qhead->head;      if(_e == NULL)     {		*e = NULL;     }      else     {		qhead->head  = _e->next;	if(qhead->head == NULL)	  {	     	     qhead->tail = NULL;	  }		_e->next = NULL;	*e = (MPID_nem_mx_cell_ptr_t)_e;     }   }extern MPID_nem_mx_cell_ptr_t      MPID_nem_module_mx_send_outstanding_request;extern MPID_nem_mx_req_queue_ptr_t MPID_nem_module_mx_send_free_req_queue;extern MPID_nem_mx_req_queue_ptr_t MPID_nem_module_mx_send_pending_req_queue;extern MPID_nem_mx_cell_ptr_t      MPID_nem_module_mx_recv_outstanding_request;extern MPID_nem_mx_req_queue_ptr_t MPID_nem_module_mx_recv_free_req_queue;extern MPID_nem_mx_req_queue_ptr_t MPID_nem_module_mx_recv_pending_req_queue;extern MPID_nem_queue_ptr_t MPID_nem_module_mx_free_queue;extern MPID_nem_queue_ptr_t MPID_nem_process_recv_queue;extern MPID_nem_queue_ptr_t MPID_nem_process_free_queue;#endif //MX_MODULE_IMPL_H

⌨️ 快捷键说明

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