btl_portals_frag.h
来自「MPI stands for the Message Passing Inter」· C头文件 代码 · 共 122 行
H
122 行
/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. * Copyright (c) 2004-2006 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, * University of Stuttgart. All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. * All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */#ifndef OMPI_BTL_PORTALS_FRAG_H#define OMPI_BTL_PORTALS_FRAG_H#if defined(c_plusplus) || defined(__cplusplus)extern "C" {#endif/** * Portals send fragment derived type */struct mca_btl_portals_frag_t { mca_btl_base_descriptor_t base; mca_btl_base_segment_t segments[1]; /* needed for retransmit case */ struct mca_btl_base_endpoint_t *endpoint; /* needed for retransmit case */ mca_btl_base_header_t hdr; /* handle to use for communication */ ptl_handle_md_t md_h; /* size of the allocated memory region -- not the amount of data we need to send */ size_t size; enum { BTL_PORTALS_FRAG_TYPE_EAGER, BTL_PORTALS_FRAG_TYPE_MAX, BTL_PORTALS_FRAG_TYPE_USER } type;};typedef struct mca_btl_portals_frag_t mca_btl_portals_frag_t; OBJ_CLASS_DECLARATION(mca_btl_portals_frag_t);typedef struct mca_btl_portals_frag_t mca_btl_portals_frag_eager_t; OBJ_CLASS_DECLARATION(mca_btl_portals_frag_eager_t); typedef struct mca_btl_portals_frag_t mca_btl_portals_frag_max_t; OBJ_CLASS_DECLARATION(mca_btl_portals_frag_max_t); typedef struct mca_btl_portals_frag_t mca_btl_portals_frag_user_t; OBJ_CLASS_DECLARATION(mca_btl_portals_frag_user_t); typedef struct mca_btl_portals_frag_t mca_btl_portals_frag_recv_t;OBJ_CLASS_DECLARATION(mca_btl_portals_frag_recv_t); /* * Macros to allocate/return descriptors from module specific * free list(s). */#define OMPI_BTL_PORTALS_FRAG_ALLOC_EAGER(btl_macro, frag, rc) \{ \ \ ompi_free_list_item_t *item; \ OMPI_FREE_LIST_GET(&((mca_btl_portals_module_t*)btl_macro)->portals_frag_eager, item, rc); \ if (rc == OMPI_ERR_TEMP_OUT_OF_RESOURCE) { \ OMPI_BTL_PORTALS_FRAG_ALLOC_MAX(btl_macro, frag, rc); \ } \ frag = (mca_btl_portals_frag_t*) item; \}#define OMPI_BTL_PORTALS_FRAG_RETURN_EAGER(btl_macro, frag) \{ \ assert(BTL_PORTALS_FRAG_TYPE_EAGER == frag->type); \ OMPI_FREE_LIST_RETURN(&((mca_btl_portals_module_t*)btl_macro)->portals_frag_eager, \ (ompi_free_list_item_t*)(frag)); \}#define OMPI_BTL_PORTALS_FRAG_ALLOC_MAX(btl_macro, frag, rc) \{ \ \ ompi_free_list_item_t *item; \ OMPI_FREE_LIST_WAIT(&((mca_btl_portals_module_t*)btl_macro)->portals_frag_max, item, rc); \ frag = (mca_btl_portals_frag_t*) item; \}#define OMPI_BTL_PORTALS_FRAG_RETURN_MAX(btl_macro, frag) \{ \ assert(BTL_PORTALS_FRAG_TYPE_MAX == frag->type); \ OMPI_FREE_LIST_RETURN(&((mca_btl_portals_module_t*)btl_macro)->portals_frag_max, \ (ompi_free_list_item_t*)(frag)); \}#define OMPI_BTL_PORTALS_FRAG_ALLOC_USER(btl_macro, frag, rc) \{ \ ompi_free_list_item_t *item; \ OMPI_FREE_LIST_WAIT(&((mca_btl_portals_module_t*)btl_macro)->portals_frag_user, item, rc); \ frag = (mca_btl_portals_frag_t*) item; \}#define OMPI_BTL_PORTALS_FRAG_RETURN_USER(btl_macro, frag) \{ \ assert(BTL_PORTALS_FRAG_TYPE_USER == frag->type); \ OMPI_FREE_LIST_RETURN(&((mca_btl_portals_module_t*)btl_macro)->portals_frag_user, \ (ompi_free_list_item_t*)(frag)); \}#if defined(c_plusplus) || defined(__cplusplus)}#endif#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?