Difference between revisions of "Message Queue Debugging"

From Mpich
Jump to: navigation, search
 
 
(4 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>.
  
  void MPID_nem_newtcp_module_vc_dbg_print_sendq(FILE *stream, MPIDI_VC_t *vc)
+
<source lang="c">
 +
  void MPID_nem_dbg_print_vc_sendq(FILE *stream, MPIDI_VC_t *vc)
 +
</source>
  
This function dumps the state of the nemesis-newtcp send queue for a particular VC (virtual connection).
+
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.
  
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 proper debugger interface that allows you
+
<source lang="c">
to examine the message queues from totalview and other debuggers.
+
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.
 +
 
 +
[[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.