Atomic Global Minimum Locator: MPI Options


Menu

Previous Next

When calculating energies for a large population of candidate structures, the program allows options to improve efficiency. By default, each processor will calculate the same number of quantum jobs. If for example, you have a population of 64 structures and 16 processors, each processor will calculate energies for exactly 4 structures. This means that by default, there is no communication between processors, except at the start of each new batch of calculations.

Since the time required for different quantum jobs varies, a better approach is to set aside one processor to act as a master that then deals out quantum tasks to the other slave processors. This can be achieved by specifying the -m option. For example, if you have a population of 64 structures and you want about 4 quantum jobs per processor, you would now need 17 processors, one master and 16 slaves. This can improve efficiency since it allows load balancing to compensate for quantum jobs that take a long time.

When using a population of structures with simulated annealing, each member of the population is essentially an independent simulated annealing run, but energy calculations for the entire population must still be performed in synchronized batches. This means that all energy calculations for a particular iteration must be completed first. Next, the iteration number increases and the temperature decreases (both of these variables are the same for all runs). Next, perturbations are made on each structure, and a new batch of energy calculations is started. This is inefficient because of the great differences in the amount of time required for different quantum energy calculations. To overcome this, the -i option can be used with simulated annealing to allow all independent runs to run separately rather than in a synchronized manner. It does this by creating separate input, output, and resume files for each population member. For example, if my input file were named LJ7_Sim.inp, this option would create a directory called LJ7_SimRuns and create input files in this directory named LJ7_Sim_1.inp, LJ7_Sim_2.inp, etc. Resume and output files would also be placed here. This option additionally creates a separate list of best structures for each run. For example if my energy files directory (input file line 4) were called energyFiles, the -i option would create Run1, Run2, etc. directories inside this directory, each with it's own bestSavedStructures directory.

Also when using the -i option, the program has a method for periodically merging the separate lists of best structures into one master list. For example, if my energy files directory were called energyFiles, the program will create a sub directory called bestSavedStructures and will copy structures from the bestSavedStructures directory in each of the Run1, Run2, etc. directories. This method also creates a master ouput and resume file. The method is run when ever you restart the run, and when the run completely finishes. You may also run the method manually by typing "./helper -u YourInputFile.inp".

When using the -i option and you must resume an unfinished run, do not change the input file to a resume file. Since each population member has its own resume file, the program is smart enough to find each of these resume files and restart the run. While the ./helper -u method does create a master resume file, this is only used to store the list of best structures and/or create an optimization file.

Menu

Previous Next