DOCUMENTATION
Welcome to the documentation section of OpenDDA
The are two associated documents that are useful when working with the OpenDDA framework:
- 1. The associated publication:
OpenDDA: A Novel High-Performance Computational Framework for the Discrete Dipole Approximation, Mc Donald, J., Golden, A., Jennings, S. G., International Journal of High Performance Computing Applications (IJHPCA), Volume 23, No. 1, 42-61, 2009. Click here - 2. The associated Ph.D. Thesis:
OpenDDA: A Novel High-Performance Computational Framework for the Discrete Dipole Approximation, Mc Donald, J., Ph.D. Thesis, School of Physocs, National University of Ireland, Galway, Ireland, September 2007. Click here
Quick-start Guide:
There are 9 different versions of the OpenDDA framework; 3 different architecture specific versions. OpenDDA_S is the basic serial implementation, OpenDDA_OMP is the OpenMP-based shared-memory implementation and OpenDDA_MPI is the MPI-based distributed-memory implementation. Furthermore, each of these versions has three associated precision specific variants, i.e., float, double and long double. For further information on the different available versions, please read "Section 5.2" of the associated Ph.D. Thesis listed on the documentation page.
- 1. Download
Download the appropriate architecture and precision specific version of the OpenDDA framework from here. - 2. Unpack the archive:
For example, for the double-precision MPI-based distributed-memory version, the command line should read something like the following: tar xzvf OpenDDA_0.41_release_MPI_double.tgz - 3. Linking:
Modify the "Makefile" in the "source" directory. This involves modifying the compiler options to your favourite C compiler (must be OpenMP compliant if using the shared-memory OpenMP-based versions of the OpenDDA framework) and modifying the library and include paths for FFTW 3 (required) and MPICH 2 (only if using one of the distributed-memory MPI-based versions of the OpenDDA framework). For further information on the linking OpenDDA with the requisite libraries, please read "Section 5.5" of the associated Ph.D. Thesis listed on the documentation page. - 4. Compiling:
For example, for the serial, OpenMP-based shared-memory and MPI-based distributed-memory versions, the command line should read: make clean; make opendda_S, make clean; make opendda_OMP and make clean; make opendda_MPI, respectively. For further information on the compiling the different versions of the OpenDDA framework, please read "Section 5.5" of the associated Ph.D. Thesis listed on the documentation page - 5. Parameter Specification:
Within the source directory, there is a template control file "control.input.template" for specifying the main simulation parameters. This template file can be copied to the filename "control.input" using the command line cp control.input.template control.input and modified as required. Furthermore, the sub-directory "input_templates" contains a number of other template files for specifying supplementary parameters. For further information on the specification of the input parameters, please read "Section 5.3" of the associated Ph.D. Thesis listed on the documentation page. Please note that the framework includes memory usage estimation routines that are separate from the main OpenDDA code. These allow users to tailor the attributes of the problem to the available resources, and thus, get the most out of the application. There is one included for each of the 9 different versions of the OpenDDA framework. The serial, OpenMP and MPI versions are called guesstimate_S, guesstimate_OMP & guesstimate_MPI, respectively, and they can be compiled separately from the main program using the commands: make guesstimate_S, guesstimate_OMP & guesstimate_MPI, respectively. For further information on these memory usage estimation routines, please read "Section 5.4" of the associated Ph.D. Thesis listed on the documentation page. - 5. Running:
For the serial versions of the OpenDDA framework, once the "control.input" file has been modified, the executable can be run with ./opendda_S. The OpenMP-based shared-memory versions can be run with ./opendda_OMP. The MPI-based distributed-memory versions can be run with, depending on your MPI distribution, mpirun -np # ./opendda_MPI or mpiexec -np # ./opendda_MPI, where # is the number of processors. Furthermore, if available, the MPI variants can be submitted to a batch queue using an appropriate PBS script. For further information on the execution of the different versions of the OpenDDA framework, please read "Section 5.5" of the associated Ph.D. Thesis listed on the documentation page.