OP2/OP2-Common — pull request #17 by gihanmudalige (2012-04-17 11:57:07+00:00)
Title: Merged mpi

Hello all,

I am reissuing this pull request to merge the changes we did at Oxford (Istvan, Mike and Myself) during the last month into master. The branch has been re-based on master now.

The changes are as follows:

1. MPI_Init() and MPI_Finalize is placed in op_init() and op_exit() for any back-end using MPI
2. Implemented op_print() function to handle printing to std out only on the ROOT processor when running under any back-end using MPI. Single node back-ends just use standard printfs
3. Implemented op_get_size() function to return the global size of a set, should be used by an application developer instead of referring directly to op_set_core struct's elements (i.e. cells->size not permitted)
4. Implemented an MPI_Barrier within op_timers() under MPI to accurately measure time. Also implemented op_timers_core() to measure time on individual MPI processes.
5. Added op_dummy_singlenode.c containing dummy functions related to MPI functionality, for use during single node execution
6. Now supports global reductions for vector data under MPI
7. Added core_size element to op_set_core struct holding the number of core elements in an mpi process, core_size = size for single node back-ends
8. Added int dirtybit flag to op_dat_core to indicate MPI halo exchange is needed during loop execution
9. merge op_mpi_core.h into op_mpi_part_core.h
10. Added op_write_hdf5() to write op_set, op_map and op_dat from a single node back-end to an hdf5 file
11. Added op_get_const_hdf5() and op_write_const_hdf5() so that constants can be read and written to an hdf5 file -- both mpi and single node back-ends supported
12. Removed op_openmp_rt_support.h as the same information is contained in op_rt_support.h
13. Changed MPI reductions to use MPI_Allreduce (replacing MPI_reduce)
14. op_plan function significantly changed, and handles latency hiding for the hybrid back-ends under MPI without the need to call the plan function twice. The offset parameter is not used.
15. Matlab generator files have also been updated such that application code which includes the above changes are generated.
16. Corrected bugs occurring due to using the COMM_PERF flag for monitoring mpi communication performance