The mpqcrun program simplifies running MPQC.

# Description

The mpqcrun program simplifies the task of running MPQC on multiple input files. Although it was primarily designed to run the validation suite, mpqcrun, is general enough to be useful in other situations. If multiple nodes or processors are present, it can be used to manage multiple invocations of MPQC.

# Running mpqcrun

mpqcrun takes the following command line options:

`--mpqc` path
  The mpqc executable to use.
`--objdir`
  Run the mpqc executable in the compile directory, rather than the install directory.
`--small`
  Skip big runs in verification suite.
`--nnodeperjob` n
  Run with n nodes per job. If this is `nnode`, use all available nodes.
`--nprocpernode` n
  Run with n processes per node.
`--nprocperjob` n
  Run with n processes per job. The default is to use all available processors.
`--nthreadperproc` n
  Use n threads per process.
`--threadgrp` grp
  Use the given threading layer.
  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.
  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.
  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. See below.
`--nodefile` file
  Specifies a file listing nodes to use. Duplicated nodes are removed.
`--nodes` nodes
  Specifies list of machines to use. A range of nodes can be given with two integers separated by a dash. Groups of nodes can be separated by a comma.
`--nodename` fmt
  This is a format string that converts the node number to its name.
`--seq` regex
  Run inputs matching reqex sequentially. This is useful when one input requires that another be run first, and more than one job is run at a time.
`--exclude` regex
  Exclude files matching regex.
`--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.
`--printfiles`
  Print the list of input files that would be run.
`--rerun`
  Overwrite output file, even if up-to-date.
`--onlynew`
  Do not overwrite output file, even if not up-to-date.
`--simpout`
  Do not append extra info like nnode to filename.
`--uniqout`
  Generate unique output filenames.
`--autoout`
  Generate output filenames by replacing the suffix with "out".
`--verbose`
  Print out what action is to be taken on each file.
`--debug`
  Don't actually run mpqc.
`--help`
  Print the documentation.

The cmd given with the `--launch` option can contain special strings that will be substituted:

`%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, if they are contained within square brackets and a substitution is not available, then everything within the the brackets is removed.

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 list of hosts on the command line.

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

# License

mpqcrun is open-source software; 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.

# 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.