Perple_X Paralyzer 

- Poor Man's Parallel Computing


 

Perple_X's memory and CPU consumption during phase diagram calculations increase exponentially with the size of the computational domain (i.e., the range of physical variables to be considered). This exponential increase occurs because over a larger range of physical conditions, Perple_X must consider more phases and a wider range of phase compositions. For example, if the pressure-temperature coordinate frame of a phase diagram section is split into quarters, the total user-time and CPU cost of section calculation is reduced dramatically. More importantly, because the calculation of each quarter requires less memory, the resolution of the calculations can be increased, with the result that the quality of the final result is improved. Because the calculations of the quarters are independent of each other, the calculations can be run in parallel if a user has access to more than one CPU, resulting in a further reduction in user-time, which, unlike true parallel computing, scales perfectly with the number of available CPUs. While it is possible to implement the process of splitting and recombining calculations by hand, this process is tedious and time-consuming. For this reason, Mark Caddick wrote an easy-to-use MatLab script named Paralyzer that automates the splitting and recombination of Perple_X calculations. 

 

To download the Paralyzer script, and for instructions on its use, go to Mark Caddick's web page at:

 

www.metamorphism.geos.vt.edu/Paralyzer.html

 

The commercial MatLab program is the only requirement for running Paralyzer, you do not need a multiprocessor computer to benefit from the script. 

 

If you do not want to support Matlab, then Evangelos Moulas has written a splitting script for Octavia, the results of which can be recombined using the Perple_X program UNSPLT. UNSPLT can also be used in conjunction with Paralyzer if Paralyzer's recombine function is deactivated. Because UNSPLT is written in FORTRAN it is marginally faster than Paralyzer's recombine function and because it has a different algorithm UNSPLT may be useful if Paralyzer has problems recombining results.