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

📄 mpid_nem_queue.h

📁 fortran并行计算包
💻 H
📖 第 1 页 / 共 2 页
字号:
	(qhead)->my_head = _e->next;					\    }									\    else								\    {									\	MPID_nem_cell_rel_ptr_t old_tail;				\									\	MPID_NEM_SET_REL_NULL ((qhead)->my_head);			\									\	old_tail = MPID_NEM_CAS_REL_NULL (&((qhead)->tail), _r_e);	\									\	if (!MPID_NEM_REL_ARE_EQUAL (old_tail, _r_e))			\	{								\	    while (MPID_NEM_IS_REL_NULL (_e->next))			\	    {								\		SKIP;							\	    }								\	    (qhead)->my_head = _e->next;				\	}								\    }									\    MPID_NEM_SET_REL_NULL (_e->next);					\    *(e) = _e;								\} while (0)                                             #else /* MPID_NEM_USE_SHADOW_HEAD */#define MPID_nem_queue_dequeue(qhead, e) do {				\    register MPID_nem_cell_ptr_t _e;					\    register MPID_nem_cell_rel_ptr_t _r_e;				\									\    _r_e = (qhead)->head;						\									\    _e = MPID_NEM_REL_TO_ABS (_r_e);					\    if (!MPID_NEM_IS_REL_NULL (_e->next))				\    {									\	(qhead)->head = _e->next;					\    }									\    else								\    {									\	MPID_nem_cell_rel_ptr_t old_tail;				\									\	MPID_NEM_SET_REL_NULL ((qhead)->head);				\									\	old_tail = MPID_NEM_CAS_REL_NULL (&((qhead)->tail), _r_e);	\									\	if (!MPID_NEM_REL_ARE_EQUAL (old_tail, _r_e))			\	{								\	    while (MPID_NEM_IS_REL_NULL (_e->next))			\	    {								\		SKIP;							\	    }								\	    (qhead)->head = _e->next;					\	}								\    }									\    MPID_NEM_SET_REL_NULL (_e->next);					\    *(e) = _e;								\} while (0)                                             #endif /* MPID_NEM_USE_SHADOW_HEAD */#endif /* MPID_NEM_USE_MACROS *//* #ifndef MPID_NEM_USE_MACROS *//* /\* Gets the head *\/ *//* static inline void *//* MPID_nem_rel_queue_dequeue (MPID_nem_queue_ptr_t rel_qhead, MPID_nem_cell_ptr_t *e) *//* { *//*     MPID_nem_queue_ptr_t  qhead = MPID_NEM_REL_TO_ABS( rel_qhead ); *//*     register MPID_nem_cell_ptr_t _e;     *//*     register MPID_nem_cell_ptr_t _e_abs; */    /*     /\*DO_PAPI (if (iter11) PAPI_accum_var (PAPI_EventSet, PAPI_vvalues11)); *\/ *//*     /\*    DO_PAPI (PAPI_reset (PAPI_EventSet)); *\/ *//* #ifdef MPID_NEM_USE_SHADOW_HEAD *//*     (_e) = qhead->my_head; *//* #else /\*SHADOW_HEAD *\/ *//*     (_e) = qhead->head ; *//* #endif /\*SHADOWHEAD *\/ *//*     (_e_abs) = MPID_NEM_REL_TO_ABS( (_e) ); *//*     if ((_e_abs)->next != MPID_NEM_REL_NULL) *//*     { *//* #ifdef MPID_NEM_USE_SHADOW_HEAD *//* 	qhead->my_head = (_e_abs)->next; *//* #else /\*MPID_NEM_USE_SHADOW_HEAD *\/ *//* 	qhead->head     = (_e_abs)->next; *//* #endif /\*MPID_NEM_USE_SHADOW_HEAD *\/ *//*     } *//*     else *//*     { *//* 	MPID_nem_cell_ptr_t old_tail; */      /* #ifdef MPID_NEM_USE_SHADOW_HEAD *//* 	qhead->my_head = MPID_NEM_REL_NULL;	 *//* #else /\*MPID_NEM_USE_SHADOW_HEAD *\/ *//* 	qhead->head = MPID_NEM_REL_NULL;	 *//* #endif /\*MPID_NEM_USE_SHADOW_HEAD *\/ *//* 	old_tail = MPID_NEM_CAS (&(qhead->tail), (_e), MPID_NEM_REL_NULL); *//* 	if (old_tail != (_e)) *//* 	{ *//* 	    while ((_e_abs)->next == MPID_NEM_REL_NULL) *//* 	    { *//* 		SKIP; *//* 	    } *//* #ifdef MPID_NEM_USE_SHADOW_HEAD *//* 	    qhead->my_head  = (_e_abs)->next; *//* #else /\*MPID_NEM_USE_SHADOW_HEAD *\/ *//* 	    qhead->head  = (_e_abs)->next; *//* #endif /\*MPID_NEM_USE_SHADOW_HEAD *\/ *//* 	} *//*     } *//*     (_e_abs)->next   = MPID_NEM_REL_NULL; *//*     *e = _e; *//*     /\*    DO_PAPI (if (iter11) PAPI_accum_var (PAPI_EventSet, PAPI_vvalues11)); *\/ *//* } *//* #else /\* MPID_NEM_USE_MACROS *\/ *//* #ifdef MPID_NEM_USE_SHADOW_HEAD *//* #define MPID_nem_rel_queue_dequeue(rel_qhead, e) do {					\ *//*     MPID_nem_queue_ptr_t  qhead = MPID_NEM_REL_TO_ABS( (MPID_nem_queue_ptr_t)rel_qhead );            \ *//*     register MPID_nem_cell_ptr_t _e;							\ *//*     register MPID_nem_cell_ptr_t _e_abs;		       				\ *//*     /\*    DO_PAPI (PAPI_reset (PAPI_EventSet));	*\/				\ *//*     (_e)     = (qhead)->my_head;		     				\ *//*     (_e_abs) = MPID_NEM_REL_TO_ABS( (_e) );                                              \ *//*     if ((_e_abs)->next != MPID_NEM_REL_NULL)				\ *//*     {										\ *//* 	(qhead)->my_head  = (_e_abs)->next;			      		\ *//*     }										\ *//*     else									\ *//*     {										\ *//* 	MPID_nem_cell_ptr_t old_tail;							\ *//* 										\ *//* 	(qhead)->my_head  = MPID_NEM_REL_NULL;			\ *//* 	old_tail = MPID_NEM_CAS (&((qhead)->tail), (_e), MPID_NEM_REL_NULL); 	\ *//* 	if (old_tail != (_e))							\ *//* 	{									\ *//* 	    while ((_e_abs)->next == MPID_NEM_REL_NULL)		\ *//* 	    {									\ *//* 		SKIP;								\ *//* 	    }									\ *//* 	    (qhead)->my_head = (_e_abs)->next;					\ *//* 	}									\ *//*     }										\ *//* 										\ *//*     (_e_abs)->next   = MPID_NEM_REL_NULL;		      		\ *//*     *(e) = _e;									\ *//*     /\*    DO_PAPI (if (iter11) PAPI_accum (PAPI_EventSet, PAPI_values11));*\/	\ *//*     /\*DO_PAPI (if (iter11) PAPI_accum (PAPI_EventSet, PAPI_values11)); *\/	\ *//* } while (0)                                              *//* #else /\* MPID_NEM_USE_SHADOW_HEAD *\/ *//* #define MPID_nem_rel_queue_dequeue(rel_qhead, e) do {				        \ *//*     MPID_nem_queue_ptr_t  qhead = MPID_NEM_REL_TO_ABS( (MPID_nem_queue_ptr_t)rel_qhead );            \ *//*     register MPID_nem_cell_ptr_t _e;                                                   \ *//*     register MPID_nem_cell_ptr_t _e_abs;		       		      	        \ *//*     /\*    DO_PAPI (PAPI_reset (PAPI_EventSet));	*\/				\ *//*     (_e)     = (qhead)->head;                                                   \ *//*     (_e_abs) = MPID_NEM_REL_TO_ABS( (_e) );                                              \ *//*     if ((_e_abs)->next != MPID_NEM_REL_NULL)				\ *//*     {										\ *//* 	(qhead)->head  = (_e_abs)->next;				      	\ *//*     }										\ *//*     else									\ *//*     {										\ *//* 	MPID_nem_cell_ptr_t old_tail;							\ *//* 										\ *//* 	(qhead)->head  = MPID_NEM_REL_NULL;	         	  	\ *//* 	old_tail = MPID_NEM_CAS (&((qhead)->tail), (_e), MPID_NEM_REL_NULL);   \ *//* 	if (old_tail != (_e))							\ *//* 	{									\ *//* 	    while ((_e_abs)->next == MPID_NEM_REL_NULL)     		\ *//* 	    {									\ *//* 		SKIP;								\ *//* 	    }									\ *//* 	    (qhead)->head = (_e_abs)->next;		      			\ *//* 	}									\ *//*     }										\ *//* 										\ *//*     (_e_abs)->next   = MPID_NEM_REL_NULL;			      	\ *//*     *(e) = _e;									\ *//*     /\*    DO_PAPI (if (iter11) PAPI_accum (PAPI_EventSet, PAPI_values11));*\/	\ *//*     /\*DO_PAPI (if (iter11) PAPI_accum (PAPI_EventSet, PAPI_values11)); *\/	\ *//* } while (0)                                              *//* #endif /\* MPID_NEM_USE_SHADOW_HEAD *\/ *//* #endif /\* MPID_NEM_USE_MACROS *\/ */#if 0 /* Where are these functions used? */#ifdef MPID_NEM_USE_SHADOW_HEAD#undef FUNCNAME#define FUNCNAME MPID_nem_queue_poll#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)static inline int MPID_nem_queue_poll (MPID_nem_queue_ptr_t qhead, MPID_nem_poll_dir_t in_or_out){    int mpi_errno = MPI_SUCCESS;        mpi_errno = MPID_nem_network_poll (in_or_out);    if (mpi_errno) MPIU_ERR_POP (mpi_errno);    if (MPID_NEM_IS_REL_NULL (qhead->my_head))    {	while (MPID_NEM_IS_REL_NULL (qhead->head))	{	    mpi_errno = MPID_nem_network_poll (in_or_out);            if (mpi_errno) MPIU_ERR_POP (mpi_errno);	    sched_yield();	}	qhead->my_head = qhead->head;	MPID_NEM_SET_REL_NULL (qhead->head);    } fn_exit:    return mpi_errno; fn_fail:    goto fn_exit;}#else #undef FUNCNAME#define FUNCNAME MPID_nem_queue_poll#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)static inline int MPID_nem_queue_poll (MPID_nem_queue_ptr_t qhead, MPID_nem_poll_dir_t in_or_out){    int mpi_errno = MPI_SUCCESS;        mpi_errno = MPID_nem_network_poll (in_or_out);        if (mpi_errno) MPIU_ERR_POP (mpi_errno);    while (MPID_NEM_IS_REL_NULL (qhead->head))    {	mpi_errno = MPID_nem_network_poll (in_or_out);        if (mpi_errno) MPIU_ERR_POP (mpi_errno);	sched_yield();    }     fn_exit:    return mpi_errno; fn_fail:    goto fn_exit;}#endif/* MPID_NEM_USE_SHADOW_HEAD */#endif/* #ifdef MPID_NEM_USE_SHADOW_HEAD *//* static inline  *//* void MPID_nem_rel_queue_poll (MPID_nem_queue_ptr_t rel_qhead, MPID_nem_poll_dir_t in_or_out) *//* { *//*     MPID_nem_queue_ptr_t  qhead = MPID_NEM_REL_TO_ABS( rel_qhead ); *//*     MPID_nem_rel_network_poll (in_or_out); *//*     if (qhead->my_head == MPID_NEM_REL_NULL) *//*     { *//* 	while (qhead->head == MPID_NEM_REL_NULL) *//* 	{ *//* 	    MPID_nem_rel_network_poll ( in_or_out ); *//* 	    sched_yield(); *//* 	} *//* 	qhead->my_head = qhead->head;	 *//* 	qhead->head = MPID_NEM_REL_NULL;    *//*     } *//* } *//* #else  *//* static inline void MPID_nem_rel_queue_poll (MPID_nem_queue_ptr_t rel_qhead, MPID_nem_poll_dir_t in_or_out) *//* { *//*     MPID_nem_queue_ptr_t  qhead = MPID_NEM_REL_TO_ABS( rel_qhead ); *//*     MPID_nem_rel_network_poll ( in_or_out );     *//*     while (qhead->head == MPID_NEM_REL_NULL) *//*     { *//* 	MPID_nem_rel_network_poll ( in_or_out ); *//* 	sched_yield(); *//*     } *//* } *//* #endif/\* MPID_NEM_USE_SHADOW_HEAD *\/ */#endif /* MPID_NEM_QUEUE_H */

⌨️ 快捷键说明

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