The communication with the batch system is managed via so-called cluster functions. They are created with the constructor makeClusterFunctions which defines how jobs are submitted on your system. Furthermore, you may provide functions to list queued/running jobs and to kill jobs.
Usually you do not have to start from scratch but can just use one of the cluster functions which ship with the package:
To use the package with the socket cluster functions, you would call the respective constructor makeClusterFunctionsSocket():
reg = makeRegistry(NA)
## Sourcing configuration file '/home/lang/.config/batchtools/config.R' ...
## Loading required package: methods
reg$cluster.functions = makeClusterFunctionsSocket(2)
To make this selection permanent for this registry, save the Registry with saveRegistry. To make your cluster function selection permanent for a specific system across R sessions for all new Registries, you can set up a configuration file (see below).
If you have trouble debugging your cluster functions, you can enable the debug mode for extra output. To do so, install the debugme package and set the environment variable
batchtools before you load the
Sys.setenv(DEBUGME = "batchtools") library(batchtools)
Many cluster functions require a template file as argument. These templates are used to communicate with the scheduler and contain placeholders to evaluate arbitrary R expressions. Internally, the brew package is used for this purpose. Some exemplary template files can be found here. It would be great if you would help expand this collection to cover more exotic configurations. To do so, please send your template via mail or open a new pull request.
If the flexibility which comes with templating is not sufficient, you can still construct a custom cluster function implementation yourself using the provided constructor.
The configuration file can be used to set system specific options. Its default location depends on the operating system (see Registry), but for the first time setup you can put one in the current working directory (as reported by
getwd()). In order to set the cluster function implementation, you would generate a file with the following content:
cluster.functions = makeClusterFunctionsInteractive()
The configuration file is parsed whenever you create or load a Registry. It is sourced inside of your registry which has the advantage that you can (a) access all of the parameters which are passed to makeRegistry and (b) you can also directly change them. Lets say you always want your working directory in your home directory and you always want to load the
checkmate package on the nodes, you can just append these lines:
work.dir = "~" packages = union(packages, "checkmate")
See the documentation on Registry for a more complete list of supported configuration options.