mpidi_printf.c
来自「mpi并行计算的c++代码 可用vc或gcc编译通过 可以用来搭建并行计算试验环」· C语言 代码 · 共 338 行 · 第 1/2 页
C
338 行
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */#include "mpidimpl.h"#include <stdio.h>#include <stdarg.h>/* style: allow:vprintf:1 sig:0 *//* style: allow:printf:2 sig:0 *//* FIXME: What are these routines for? Who uses them? Why are they different from the src/util/dbg routines? */#undef MPIDI_dbg_printfvoid MPIDI_dbg_printf(int level, char * func, char * fmt, ...){ /* FIXME: This "unreferenced_arg" is an example of a problem with the API (unneeded level argument) or the code (failure to check the level argument). Inserting these "unreference_arg" macros erroneously suggests that the code is correct with this ununsed argument, and thus commits the grave harm of obscuring a real problem */ MPIU_UNREFERENCED_ARG(level); MPID_Common_thread_lock(); { va_list list; if (MPIR_Process.comm_world) { MPIU_dbglog_printf("[%d] %s(): ", MPIR_Process.comm_world->rank, func); } else { MPIU_dbglog_printf("[-1] %s(): ", func); } va_start(list, fmt); MPIU_dbglog_vprintf(fmt, list); va_end(list); MPIU_dbglog_printf("\n"); fflush(stdout); } MPID_Common_thread_unlock();}#undef MPIDI_err_printfvoid MPIDI_err_printf(char * func, char * fmt, ...){ MPID_Common_thread_lock(); { va_list list; if (MPIR_Process.comm_world) { printf("[%d] ERROR - %s(): ", MPIR_Process.comm_world->rank, func); } else { printf("[-1] ERROR - %s(): ", func); } va_start(list, fmt); vprintf(fmt, list); va_end(list); printf("\n"); fflush(stdout); } MPID_Common_thread_unlock();}/* FIXME: It would be much better if the routine to print packets used routines defined by packet type, making it easier to modify the handling of packet types (and allowing channels to customize the printing of packets). For example, an array of function pointers, indexed by packet type, could be used. Also, these routines should not use MPIU_DBG_PRINTF, instead they should us a simple fprintf with a style allowance (so that the style checker won't flag the use as a possible problem). */#ifdef MPICH_DBG_OUTPUTvoid MPIDI_DBG_Print_packet(MPIDI_CH3_Pkt_t *pkt){ MPID_Common_thread_lock(); { MPIU_DBG_PRINTF(("MPIDI_CH3_Pkt_t:\n")); switch(pkt->type) { case MPIDI_CH3_PKT_EAGER_SEND: MPIU_DBG_PRINTF((" type ......... EAGER_SEND\n")); MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->eager_send.sender_req_id)); MPIU_DBG_PRINTF((" context_id ... %d\n", pkt->eager_send.match.context_id)); MPIU_DBG_PRINTF((" tag .......... %d\n", pkt->eager_send.match.tag)); MPIU_DBG_PRINTF((" rank ......... %d\n", pkt->eager_send.match.rank)); MPIU_DBG_PRINTF((" data_sz ...... %d\n", pkt->eager_send.data_sz));#ifdef MPID_USE_SEQUENCE_NUMBERS MPIU_DBG_PRINTF((" seqnum ....... %d\n", pkt->eager_send.seqnum));#endif break; case MPIDI_CH3_PKT_EAGER_SYNC_SEND: MPIU_DBG_PRINTF((" type ......... EAGER_SYNC_SEND\n")); MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->eager_sync_send.sender_req_id)); MPIU_DBG_PRINTF((" context_id ... %d\n", pkt->eager_sync_send.match.context_id)); MPIU_DBG_PRINTF((" tag .......... %d\n", pkt->eager_sync_send.match.tag)); MPIU_DBG_PRINTF((" rank ......... %d\n", pkt->eager_sync_send.match.rank)); MPIU_DBG_PRINTF((" data_sz ...... %d\n", pkt->eager_sync_send.data_sz));#ifdef MPID_USE_SEQUENCE_NUMBERS MPIU_DBG_PRINTF((" seqnum ....... %d\n", pkt->eager_sync_send.seqnum));#endif break; case MPIDI_CH3_PKT_EAGER_SYNC_ACK: MPIU_DBG_PRINTF((" type ......... EAGER_SYNC_ACK\n")); MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->eager_sync_ack.sender_req_id)); break; case MPIDI_CH3_PKT_READY_SEND: MPIU_DBG_PRINTF((" type ......... READY_SEND\n")); MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->ready_send.sender_req_id)); MPIU_DBG_PRINTF((" context_id ... %d\n", pkt->ready_send.match.context_id)); MPIU_DBG_PRINTF((" tag .......... %d\n", pkt->ready_send.match.tag)); MPIU_DBG_PRINTF((" rank ......... %d\n", pkt->ready_send.match.rank)); MPIU_DBG_PRINTF((" data_sz ...... %d\n", pkt->ready_send.data_sz));#ifdef MPID_USE_SEQUENCE_NUMBERS MPIU_DBG_PRINTF((" seqnum ....... %d\n", pkt->ready_send.seqnum));#endif break; case MPIDI_CH3_PKT_RNDV_REQ_TO_SEND: MPIU_DBG_PRINTF((" type ......... REQ_TO_SEND\n")); MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->rndv_req_to_send.sender_req_id)); MPIU_DBG_PRINTF((" context_id ... %d\n", pkt->rndv_req_to_send.match.context_id)); MPIU_DBG_PRINTF((" tag .......... %d\n", pkt->rndv_req_to_send.match.tag)); MPIU_DBG_PRINTF((" rank ......... %d\n", pkt->rndv_req_to_send.match.rank)); MPIU_DBG_PRINTF((" data_sz ...... %d\n", pkt->rndv_req_to_send.data_sz));#ifdef MPID_USE_SEQUENCE_NUMBERS MPIU_DBG_PRINTF((" seqnum ....... %d\n", pkt->rndv_req_to_send.seqnum));#endif break; case MPIDI_CH3_PKT_RNDV_CLR_TO_SEND: MPIU_DBG_PRINTF((" type ......... CLR_TO_SEND\n")); MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->rndv_clr_to_send.sender_req_id)); MPIU_DBG_PRINTF((" recvr_reqid .. 0x%08X\n", pkt->rndv_clr_to_send.receiver_req_id)); break; case MPIDI_CH3_PKT_RNDV_SEND: MPIU_DBG_PRINTF((" type ......... RNDV_SEND\n")); MPIU_DBG_PRINTF((" recvr_reqid .. 0x%08X\n", pkt->rndv_send.receiver_req_id)); break; case MPIDI_CH3_PKT_CANCEL_SEND_REQ: MPIU_DBG_PRINTF((" type ......... CANCEL_SEND\n")); MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->cancel_send_req.sender_req_id)); MPIU_DBG_PRINTF((" context_id ... %d\n", pkt->cancel_send_req.match.context_id)); MPIU_DBG_PRINTF((" tag .......... %d\n", pkt->cancel_send_req.match.tag)); MPIU_DBG_PRINTF((" rank ......... %d\n", pkt->cancel_send_req.match.rank)); break; case MPIDI_CH3_PKT_CANCEL_SEND_RESP: MPIU_DBG_PRINTF((" type ......... CANCEL_SEND_RESP\n")); MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->cancel_send_resp.sender_req_id)); MPIU_DBG_PRINTF((" ack .......... %d\n", pkt->cancel_send_resp.ack)); break; case MPIDI_CH3_PKT_PUT: MPIU_DBG_PRINTF((" type ......... MPIDI_CH3_PKT_PUT\n")); MPIU_DBG_PRINTF((" addr ......... %p\n", pkt->put.addr)); MPIU_DBG_PRINTF((" count ........ %d\n", pkt->put.count)); MPIU_DBG_PRINTF((" datatype ..... 0x%08X\n", pkt->put.datatype)); MPIU_DBG_PRINTF((" dataloop_size. 0x%08X\n", pkt->put.dataloop_size)); MPIU_DBG_PRINTF((" target ....... 0x%08X\n", pkt->put.target_win_handle)); MPIU_DBG_PRINTF((" source ....... 0x%08X\n", pkt->put.source_win_handle)); /*MPIU_DBG_PRINTF((" win_ptr ...... 0x%08X\n", pkt->put.win_ptr));*/ break; case MPIDI_CH3_PKT_GET: MPIU_DBG_PRINTF((" type ......... MPIDI_CH3_PKT_GET\n")); MPIU_DBG_PRINTF((" addr ......... %p\n", pkt->get.addr));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?