The scratch directory is the place where DIRAC will write temporary files. At the beginning of the run, DIRAC copies input files and the binary into the scratch space and at the end of the calculation, the output is copied back, possibly together with other useful (restart) files.
How you can set the scratch directory¶
You can set the scratch space like this:
$ pam --scratch=/somepath
If --scratch is not set, DIRAC will look for the environment variabls DIRAC_TMPDIR.
If these variables are not set, DIRAC defaults to $HOME/DIRAC_scratch_directory.
On your local computer you typically want to use the same scratch space every time and you may be tired of typing pam --scratch every time. In this case, put --scratch=/somepath in your ~/.diracrc or export DIRAC_TMPDIR in your ~/.bashrc or equivalent.
DIRAC will always append $USER/DIRAC_inp_mol_pid to the scratch path. This is to prevent users from accidentally wiping out their home directory.
What if you don’t want DIRAC to append anything to your scratch path¶
For this use:
$ pam --scratchfull=/somepath
In this case DIRAC will use the path as it is and not append anything to it. Be careful with this since DIRAC may remove the path after the calculation has finished.
How to set the scratch path on a cluster¶
On a cluster you typically want to be able to find the scratch directory based on some job id. If you are on a cluster with a Torque/PBS scheduler then it can be useful to set:
$ pam --scratch=/somepath/$USER/$PBS_JOBID
Cluster with a global scratch disk¶
This means that all nodes write temporary files to the same disk.
No additional flags are needed for this run.
Cluster with local scratch disks¶
This means that each node writes temporary files to its own disk.
For this situation the input files have to be distributed over the nodes based on --machfile:
$ pam --scratch=/somepath/$USER/$PBS_JOBID --machfile=/path/to/machfile
If you don’t give --machfile, DIRAC assumes that you run using a global scratch disk.
The list of machines is typically generated when the scheduler launches the job but you can also set the list of machines manually.
The input files are by default distributed using rsh/rcp. If your cluster does not support these you can change to ssh/scp protocol:
$ pam --scratch=/somepath/$USER/$PBS_JOBID --machfile=/path/to/machfile --rsh=ssh --rcp=scp