MPITASK(1)

πŸ’– MPITASK(1) β€” bestie's guide to peeping on your MPI processes πŸ’–

okay so real talk: this is the mpitask command from the LAM COMMANDS manual. she's your little window into what every MPI process is doing right now, and honestly? she ate. πŸ“


✨ SYNOPSIS ✨

mpitask [-cdh] [-gps] [nodes] [processes]

πŸŽ€ OPTIONS πŸŽ€

  • -c β€” print communicator descriptions. see "Communicators" below, bestie. πŸ’¬
  • -d β€” print datatype descriptions. see "Datatypes". πŸ”’
  • -gps β€” print process info in GPS format. yes it's giving navigation but it's not, iykyk. πŸ›°οΈ
  • -h β€” print useful info on this command. the classic "help me" flag, love her. πŸ™‹β€β™€οΈ
🚨 heads up: -c and -d are mutually exclusive. you literally cannot have both. pick a lane. πŸ’…

🌸 DESCRIPTION 🌸

The mpitask command shows you the tea on processes that are using MPI. one line gets printed per reported MPI process β€” no more, no less. and if you don't specify any processes or nodes on the command line? she reports all MPI processes on all nodes. full send. πŸ‘‘

% mpitask
TASK (G/L)    FUNCTION   PEER|ROOT   TAG   COMM    COUNT   DATATYPE
0/0 trivial   Ssend      1/1         123   WORLD   64      INT
1/1 trivial   Recv       0/0         456   WORLD   64      INT

so for each process, mpitask normally prints the following, and here's the breakdown:

  • TASK β€” an ID for the process. if the process is currently communicating, you also get a / followed by the process's rank within the current communicator. the executable name, if it's available, shows up too. see "MPI Process Identification" below. 🏷️
  • FUNCTION β€” an abbreviated version of the function name if the process is blocked inside an MPI function. otherwise you get one of these execution states instead:
    • running β€” free to run on the underlying OS. living her best life. πŸƒβ€β™€οΈ
    • paused β€” blocked on lam_kpause(2).
    • stopped β€” stopped by the LAM signal, LAM_SIGARREST. see doom(1). πŸ’€ (yes really, that's the name)
    • blocked β€” blocked in a LAM function. in general this should be a transitory state. if you want more info on a LAM process's state you can use state(1).
  • PEER|ROOT β€” the source or destination of a point-to-point communication, or the root process of certain collective communications, followed by a / and the process's rank within the current communicator. 🀝
  • TAG β€” the message tag, if any, that was specified as a parameter to the current MPI function. πŸ”–
  • COMM β€” the communicator ID, if any, that was specified as a parameter to the current MPI function. communicators used in collective calls get displayed with a * suffix. want more communicator info? that's the -c option. ⭐
  • COUNT β€” the element count, if any, that was specified as a parameter to the current MPI function. πŸ”’
  • DATATYPE β€” the element datatype, if any, that was specified as a parameter to the current MPI function. for intrinsic datatypes, you get a shortened version of the datatype name. for derived datatypes, you get a datatype label. more datatype info? that's the -d option. 🧬

πŸ¦‹ MPI Process Identification πŸ¦‹

By default, MPI processes are identified by their rank in MPI_COMM_WORLD. we call this rank the "global" rank (G), because why say more words. the rank within the currently employed communicator is the "local" rank (L). ✨

Now β€” because processes can be dynamically spawned (see MPIL_Spawn(2)) and because multiple concurrent MPI applications are allowed, it is possible for multiple MPI_COMM_WORLD communicators to coexist. and in those situations?? the global rank is no longer globally unique and the identification becomes ambiguous. 😭 not the identity crisis.

so LAM provides an alternate way of identifying MPI processes: the GPS (Global Positioning System). a process's GPS consists of the nodeid the process is running on, plus the process's LAM index on that node. it's displayed in mpitask as the pair nnode,iindex. and if the -gps option is given, then the GPS is substituted for the global rank (G). slay. πŸ›°οΈπŸ’…


πŸ’¬ Communicators πŸ’¬

If the -c option is given, then info is no longer displayed in that horizontal format we described above. instead, for each selected process currently using a communicator, you get the info from the TASK column (described above) followed by an expanded description of the communicator. that description includes the size of the communicator group(s) and the global identifiers of all members of the group(s). the whole squad, listed. πŸ‘―β€β™€οΈ


πŸ”’ Datatypes πŸ”’

If the -d option is given, then info is no longer displayed in that horizontal format described above. instead, for each selected process currently using a communicator, you get the info from the TASK column (described above) followed by the datatype's type map. πŸ—ΊοΈ


🌈 EXAMPLES 🌈

  • mpitask β€” display the status of all MPI processes on all nodes. the full tour. 🚌
  • mpitask -c n0 i9 β€” display the communicator (if any) of process index 9 on node 0. very specific, very demure. 🎯

πŸ”₯ DIAGNOSTICS πŸ”₯

If no MPI processes are found, only the title line is displayed. that's it. that's the whole thing. sometimes the group chat is just quiet. πŸ™ˆ


πŸ’€ BUGS πŸ’€

Sometimes processes may be shown as blocked inside a non-blocking MPI function. this happens when the process is blocked inside the MPI function on some internal LAM event. such states are highly transitory, so don't spiral about it. 😌


πŸ‘‘ SEE ALSO πŸ‘‘

doom(1), libmpi(3), mpirun(1), mpimsg(1), state(1), MPIL_Comm_id(2), MPIL_Type_id(2)


okay bestie that's the whole page, every flag, every column, every vibe. go forth and monitor. 🫢✨

this was LAM 7.1.4, from July, 2007 β€” yes she's vintage, yes she's still iconic. πŸ’–