Difference between revisions of "Message Queue Debugging"

From Mpich
Jump to: navigation, search
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
The capability to dump CH3 and nemesis-newtcp recv/send queues from a debugger was added in {{changeset|1195}}.  The functions used to do so are:
+
The capability to dump CH3 and nemesis-tcp recv/send queues from a debugger was added in {{changeset|1195}}.  The functions used to do so are:
  
 +
<source lang="c">
 
  void MPIDI_CH3U_Dbg_print_recvq(FILE *stream)
 
  void MPIDI_CH3U_Dbg_print_recvq(FILE *stream)
 +
</source>
  
 
This function dumps the state of the CH3 receive queues (both posted and unexpected) to the given stream.  A common choice for the stream is <code>stdout</code> or <code>stderr</code>.
 
This function dumps the state of the CH3 receive queues (both posted and unexpected) to the given stream.  A common choice for the stream is <code>stdout</code> or <code>stderr</code>.
  
 +
<source lang="c">
 
  void MPID_nem_dbg_print_vc_sendq(FILE *stream, MPIDI_VC_t *vc)
 
  void MPID_nem_dbg_print_vc_sendq(FILE *stream, MPIDI_VC_t *vc)
 +
</source>
  
This function dumps the state of the nemesis shared memory and module send queues for a particular VC (virtual connection).  This is only implemented for the newtcp module at the moment, although it is simple to add support for other modules as needed.
+
This function dumps the state of the nemesis shared memory and module send queues for a particular VC (virtual connection).  This is only implemented for the tcp module at the moment, although it is simple to add support for other modules as needed.
 +
 
 +
<source lang="c">
 +
void MPID_nem_dbg_print_all_sendq(FILE *stream)
 +
</source>
 +
 
 +
This is a convenience function that basically just calls <code>_print_vc_sendq</code> for all known VCs in all known PGs (process groups).
  
 
You can call these functions from a debugger to aid in debugging various problems such as incorrect ordering of <code>MPI_Send</code>'s and <code>MPI_Recv</code>'s in collective algorithms or user code.  These functions are not related to the [[Debugger_Message_Queue_Access|proper debugger interface]] that allows you to examine the message queues from totalview and other debuggers.
 
You can call these functions from a debugger to aid in debugging various problems such as incorrect ordering of <code>MPI_Send</code>'s and <code>MPI_Recv</code>'s in collective algorithms or user code.  These functions are not related to the [[Debugger_Message_Queue_Access|proper debugger interface]] that allows you to examine the message queues from totalview and other debuggers.
 +
 +
[[Category:Design Documents]]
  
 
<!-- vim: set ft=wikipedia : -->
 
<!-- vim: set ft=wikipedia : -->

Latest revision as of 19:21, 11 May 2010

The capability to dump CH3 and nemesis-tcp recv/send queues from a debugger was added in r1195. The functions used to do so are:

 void MPIDI_CH3U_Dbg_print_recvq(FILE *stream)

This function dumps the state of the CH3 receive queues (both posted and unexpected) to the given stream. A common choice for the stream is stdout or stderr.

 void MPID_nem_dbg_print_vc_sendq(FILE *stream, MPIDI_VC_t *vc)

This function dumps the state of the nemesis shared memory and module send queues for a particular VC (virtual connection). This is only implemented for the tcp module at the moment, although it is simple to add support for other modules as needed.

 void MPID_nem_dbg_print_all_sendq(FILE *stream)

This is a convenience function that basically just calls _print_vc_sendq for all known VCs in all known PGs (process groups).

You can call these functions from a debugger to aid in debugging various problems such as incorrect ordering of MPI_Send's and MPI_Recv's in collective algorithms or user code. These functions are not related to the proper debugger interface that allows you to examine the message queues from totalview and other debuggers.