TURBOMOLE Users Forum

TURBOMOLE Modules => Ridft, Rdgrad, Dscf, Grad => Topic started by: Bob79 on August 21, 2013, 04:12:05 PM

Title: scratch directory in ridft
Post by: Bob79 on August 21, 2013, 04:12:05 PM
Hi folks,

can anyone enlighten me how exactly it is possible to define a local scratch directory for the intermediate files for ridft runs both in serial and parallel? I tried setting $TURBOTMPDIR but it seemed to have no effect...

Thanks,
Bob
Title: Re: scratch directory in ridft
Post by: Hauke on August 21, 2013, 06:30:26 PM
Setting $TURBOTMPDIR should be correct.
You have to make sure that this parameter is also set on the machine the job is actually running and not just on the login node.
What result do you get when you run
echo $TURBOTMPDIR
before you start ridft on the same machine?
What is written in the top lines of the parallel ridft output? In my version 6.3.1 it is something like
Quote
Parallel program ridft_mpi will be taken out of the TURBODIR directory.
TURBOTMPDIR environment variable set to "/scratch/hauke".
Title: Re: scratch directory in ridft
Post by: Bob79 on August 21, 2013, 07:41:19 PM
It does seem to recognize the environment variable. However, I don't see any difference whether I leave it empty or set it to a directory. It also does not matter if that directory exists or not, I always get:

Code: [Select]
TURBOTMPDIR environment variable set to "/temp/does/not/exist".
This directory must exist and be writable by the master process (slave1).
STARTING ridft ON 2 PROCESSORS!

The problem that we have is the following: we need to run ridft for >4000 molecules and have a sort of master program that runs the bookkeeping and distributes the jobs to cluster nodes. Here, we get the best performance by running ridft in serial multiple times at the the same time. The coord and control files lie on a nfs node, each of the serial ridft puts the diff* diis* files also on the same directory on nfs, which is of course slowing down execution times like crazy. We would like to tell turbomole to put those on a local scratch of the cluster node instead.

When I run ridft in parallel, all I see is a directory "MPI-TEMPDIR-001" in the main directory containing two diis* files, while I don't see where the diff* are put. I don't understand where those are going?
Title: Re: scratch directory in ridft
Post by: Hauke on August 21, 2013, 09:08:57 PM

I agree to your plan running these 4000 ridft calculations in serial mode.

Code: [Select]
TURBOTMPDIR environment variable set to "/temp/does/not/exist".
This directory must exist and be writable by the master process (slave1).

As printed out the directory must exist and has to be writable. Did you check i this is the case?
(for example by
mkdir -p $TURBOTMPDIR
touch ${TURBOTMPDIR}/testfile
)

In the Manual of TM6.5 (http://www.cosmologic.de/data/chemistry/DOC.pdf) is written:

Quote
In MPI parallel runs the programs attach to the name given in $TURBOTMPDIR node-speci c extension (e.g. /scratch/username/tmjob-001 ) to avoid clashes between processes that access the same le system. The jobs must have the permissions to create these directories. Therefore one must not set $TURBOTMPDIR to something like /scratch which would result in directory names like /scratch-001 which can usually not created by jobs running under a standard user id

Maybe you should also consider this in your test cases.


By the way, I would recommend to delete the $scfdump keyword out your control file as otherwise at each cycle the scf information is written back to the nfs and usually you don't need this intermediate information (only for restarting...) The (converged) final mos are written back anyway.

Title: Re: scratch directory in ridft
Post by: Bob79 on August 22, 2013, 08:57:02 AM
Yeah, directory exists and is writable. Thanks for the suggestion about $scfdump.
Title: Re: scratch directory in ridft
Post by: Hauke on August 22, 2013, 10:32:13 AM

I remember that I sometimes had problems with $TURBOTMPDIR being set to a too long path. I don't remember the exact limit but maybe you could do a test with a shorter $TURBOTMPDIR (also avoid spaces and other special characters in it).
Title: Re: scratch directory in ridft
Post by: uwe on August 22, 2013, 02:17:06 PM
Hi,

setting $TURBOTMPDIR works only if you run the parallel version. If you get MPI-TEMPDIR-* like directories, then indeed the parallel version was started.

You have several options:


Since you are going to write a script on your own, you can of course do whatever you prefer. I just hope that those hints are a bit helpful.

Regards,

Uwe