mpqcrun(1)

πŸ“¦ version 2.3.1, in fedora 43, fedora 44

πŸ’… mpqcrun β€” the NAME section, bestie

mpqcrun β€” the program that makes running MPQC, like, actually easy. ✨

It lives in the General Commands Manual, and yes, she's a whole queen. πŸ‘‘


🌸 Synopsis

mpqcrun [options] [file1.in] [file2.in] ...

πŸŽ€ Description

Okay so real talk: mpqcrun makes the whole "running MPQC on a million input files" situation so much less of a nightmare. It was primarily designed to run the validation suite, but ngl she's general enough to be useful in literally any other situation too. πŸ’–

And if you've got multiple nodes or processors hanging around? She can manage multiple invocations of MPQC at once. Multi-tasking queen. Periodt. πŸ‘‘


✨ Running mpqcrun

mpqcrun takes the following command line options, and yes, we're going through every single one:

  • --mpqc path β€” the mpqc executable to use. Pick your fighter. πŸ’…
  • --objdir β€” run the mpqc executable in the compile directory instead of the install directory.
  • --small β€” skip the big runs in the verification suite. Tiny runs only, we're conserving energy. πŸ“
  • --nnodeperjob n β€” run with n nodes per job. And if this is nnode, use all the available nodes. Greedy but valid.
  • --nprocpernode n β€” run with n processes per node.
  • --nprocperjob n β€” run with n processes per job. Default is to use all available processors (she's an overachiever, we love that).
  • --nthreadperproc n β€” use n threads per process.
  • --threadgrp grp β€” use the given threading layer. Your options:
    • grp=none β€” use MPQC's default.
    • grp=proc β€” do a single threaded run.
    • grp=posix β€” use POSIX threads.
  • --messagegrp grp β€” use the given communication layer. Your options:
    • grp=none β€” use MPQC's default.
    • grp=proc β€” does a single processor run.
    • grp=mpi β€” use MPI.
  • --memorygrp grp β€” use the given remote memory communication layer. Your options:
    • grp=none β€” use MPQC's default.
    • grp=proc β€” does a single processor run.
    • grp=mtmpi β€” use multi-threaded MPI.
    • grp=armci β€” use ARMCI.
  • --launch cmd β€” use the given command to launch jobs. (More on this below, keep reading πŸ’–)
  • --nodefile file β€” specifies a file listing nodes to use. Duplicated nodes get removed, no dupes allowed, we're not doing that here. πŸ™ˆ
  • --nodes nodes β€” specifies a list of machines to use. You can give a range of nodes with two integers separated by a dash, and groups of nodes can be separated by a comma.
  • --nodename fmt β€” this is a format string that converts the node number to its name. Glow-up for integers. ✨
  • --seq regex β€” run inputs matching reqex sequentially. (spelled exactly like that, iykyk β€” she's quirky like that πŸ’€) This is useful when one input requires that another be run first, and more than one job is running at a time.
  • --exclude regex β€” exclude files matching regex. Not you, not you, definitely not you.
  • --readdir dir β€” run mpqc on all files matching dir/*.in.
  • --inputprefix prefix β€” prepend prefix to all input file names.
  • --outputprefix prefix β€” prepend prefix to all output file names.
  • --count β€” print the number of input files that would be run. Just a headcount, no actual running. 🫢
  • --printfiles β€” print the list of input files that would be run.
  • --rerun β€” overwrite the output file, even if it's up-to-date. Chaotic, but do your thing.
  • --onlynew β€” do not overwrite the output file, even if it's not up-to-date.
  • --simpout β€” do not append extra info like nnode to the filename.
  • --uniqout β€” generate unique output filenames. No two alike. πŸ’…
  • --autoout β€” generate output filenames by replacing the suffix with "out".
  • --verbose β€” print out what action is to be taken on each file. She's narrating. Let her cook. πŸ‘‘
  • --debug β€” don't actually run mpqc. Fake it till you make it.
  • --help β€” print the documentation. Hi bestie, you're already here. πŸ’œ

πŸ¦‹ The --launch special strings

The cmd you hand over with --launch can contain special strings that will get substituted. Slots, if you will. And they are:

  • %MPQC% β€” the MPQC program to run.
  • %INPUT% β€” the input filename.
  • %OUTPUT% β€” the output filename.
  • %NPROC% β€” the number of processes to start.
  • %NODEFILE% β€” the name of a file containing the node names.
  • %NODELIST% β€” a comma separated list of node names.

For these last two β€” %NODEFILE% and %NODELIST% β€” if they're contained within square brackets and a substitution is not available, then everything within the brackets is removed. That's the whole trick. 🧚


This argument will launch MPI jobs giving mpirun a nodefile:

--launch "mpirun [-hf %NODEFILE%] -n %NPROC% %MPQC% -o %OUTPUT% %INPUT%"

This argument will launch MPI jobs giving mpirun a list of hosts on the command line:

--launch "mpirun [-H %NODELIST%] -n %NPROC% %MPQC% -o %OUTPUT% %INPUT%"

πŸ“œ License

mpqcrun is open-source software, bestie β€” you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Free is free. πŸ’–


⚠️ Warranty

mpqcrun is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Okay so no cap: there is genuinely no warranty here. Zero. Nada. She's doing her best, but you have been warned. 😭

MPQC Β· Version 2.3.1 Β· mpqcrun(1)

And that's the whole page, bestie β€” that footer energy is real: this is MPQC, Version 2.3.1, and you just read mpqcrun(1). Slay. πŸ’…βœ¨πŸ¦‹

πŸ“¦ where this page comes from