File: Message_Queue_Debugging.md

package info (click to toggle)
mpich 4.3.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 101,184 kB
  • sloc: ansic: 1,040,629; cpp: 82,270; javascript: 40,763; perl: 27,933; python: 16,041; sh: 14,676; xml: 14,418; f90: 12,916; makefile: 9,270; fortran: 8,046; java: 4,635; asm: 324; ruby: 103; awk: 27; lisp: 19; php: 8; sed: 4
file content (34 lines) | stat: -rw-r--r-- 1,251 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Message Queue Debugging

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

``` c
 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`.

``` c
 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.

``` c
 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](Debugger_Message_Queue_Access.md) that allows you to
examine the message queues from totalview and other debuggers.