MPIMSG(1)
π MPIMSG π
okay bestie, so this is the mpimsg page from the LAM COMMANDS manual β she's a little vintage, she's a little iconic, and she's here to let you peek inside MPI's message buffers. periodt. β¨
πΈ NAME πΈ
mpimsg β monitor MPI message buffers under LAM.
π SYNOPSIS π
mpimsg [-gps] [-h] [-O] [-c seq] [-d seq] [-m seq] [-e #] [-B #] [nodes]
[processes]
β¨ OPTIONS β¨
-gpsβ spill the process info in GPS format π-hβ gives you the genuinely useful scoop on this command, no gatekeeping π«Ά-Oβ the multicomputer is homogeneous, so we do no data conversion. go readmpirun(1)for the lore.-c seqβ prints a description of the communicator used in message seq. seempitask(1).-d seqβ prints a description of the datatype used in message seq. seempitask(1).-e nnβ caps how much of a message's contents get printed, to nn elements. keep it cute, keep it short.-m seqβ prints the actual contents of message seq. see "Message Contents" below π-B nnβ changes the limit on how many messages get reported at once.
lowkey important: the-c,-dand-moptions are mutually exclusive. pick ONE. she does not share the spotlight. π
π DESCRIPTION π
so the mpimsg command displays info on buffered messages β the ones that were sent using the MPI library and are currently chillin' in buffers on the specified nodes, destined for the specified processes.
fr fr though: mpimsg typically only works when the "daemon" mode of communication is being used. it cannot be used to monitor "client to client" (C2C) communications. it's giving daemon-mode-only, no cap. π
if you don't specify any processes or nodes on the command line, literally all MPI messages on all nodes get reported. we're nosy like that π
% mpimsg
SRC (G/L) DEST (G/L) TAG COMM COUNT DATATYPE MSG
0/0 1/1 123 WORLD 64 INT n1,#0
for each message, mpimsg outputs the following info:
- SRC β an identification of the source process. a
/followed by the process's rank within the message's communicator is also displayed. seempitask(1)for the whole discussion on process identification, it's a whole thing. - DEST β an identification of the destination process.
- TAG β the tag from the message envelope.
- COMM β the communicator identifier.
- COUNT β the number of data elements in the message.
- DATATYPE β the element datatype.
- MSG β the message identifier. it's expressed in the form
nn-odeid,#seqnum, wherenodeidis the physical location of the buffered message andseqnumis a sequence number assigned to the message by LAM. these values are what you use to get further info on the communicator, datatype, or message contents. π¦
want more detailed tea on a message's communicator or datatype? hit up the -c or -d options. the information is the same as what mpitask(1) gives you regarding processes. BUT β and this is the plot twist β unlike mpitask(1), these options in mpimsg require a message identifier to isolate a single message.
keep in mind that mpimsg invocations are snapshots of system status. it is possible that a buffered message shown in a call of mpimsg may be received prior to a subsequent call to mpimsg made in order to display further information. in this case, nothing is printed. she's gone, bestie. π
π Message Contents π
if the -m option is given, then the contents of the specified message are displayed. it's showtime β¨
first, the destination process identification and the message identification get printed, and then the message contents get printed in a format somewhat similar to that produced by the UNIX utility od(1). on the left hand side of each line, the offset from the beginning of the data buffer is printed in hexadecimal. after that, individual elements are printed according to their type as deduced from the type signature. holes in the datatype and changes in basic type force newlines in the output β so in effect, all elements on the same line of output are actually contiguous in the buffer and of the same basic type. it's giving organized. it's giving intentional. π
how much of a message gets printed can be limited with the -e option. the limit is specified in terms of a maximum number of elements of a basic datatype that are to be printed. for example: if a message consists of 100 structures with each structure containing three integers, then a limit of 20 would result in the display of the first 20 integers in the message β as opposed to the first 20 structures (or 60 integers). so specific. so precise. π
buffered message data is by default stored in LAM representation and will be converted to local representation for display. in the case of a homogeneous LAM and MPI processes run with the -O switch to mpirun(1), message data will be stored in the common local representation of the machines in the LAM. in this case, when using the -m option, the -O switch can be given in order to prevent the data conversion for display. iykyk π
π«Ά EXAMPLES π«Ά
mpimsgreport all MPI messages. all of them. the whole buffet. πmpimsg n1 -m 8 -e 20print the first 20 elements of message#8on node 1. iconic behavior honestly.
π DIAGNOSTICS π
- if no buffered messages are found, only the title line is displayed. just the header, sitting there alone. it's giving tumbleweed.
- if the message specified by
-c,-dor-mis no longer buffered, nothing is printed. nothing. silence. ghosted. π
π SEE ALSO π
bfctl(1), bfstate(1), libmpi(3), mpitask(1), sweep(1)
go read those too, bestie, the lore runs deep πβ¨
LAM 7.1.4 Β· July, 2007 β yeah she's an elder but she still ate, and she still runs. mwah π π π¦ π
π¦ where this page comes from
- debian bookworm: lam-runtime 7.1.4-7+b1
- debian trixie: lam-runtime 7.1.4-7.2
- ubuntu jammy: lam-runtime 7.1.4-7
- ubuntu noble: lam-runtime 7.1.4-7.1build2
- ubuntu questing: lam-runtime 7.1.4-8
- ubuntu resolute: lam-runtime 7.1.4-8build1
- ubuntu stonking: lam-runtime 7.1.4-8build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms