Parallel and Distributed SWMM for Individual Computation in a Genetic Algorithm .


James Ball, Peter Brady

Thursday 2 july 2015

14:35 - 14:50h at Central America (level 0)

Themes: (T) Water resources and hydro informatics (WRHI), (ST) Catchment hydrology

Parallel session: 12H. Water resources - Catchment


SWMM is a computer model designed to analyze both the quantity and quality of runoff from urban catchments. However, in practical use there are a large number of parameters which need calibration. Furthermore, these parameters vary spatially across larger complex catchments. Previous studies have used Genetic Algorithms as a means of searching this very large parameter space. Despite the efficiency of GAs there remains the computational cost associated with executing SWMM once per individual per generation. As the execution of a given individual within the population is entirely separate from others, the population computation step is embarrassingly parallel. The key step, therefore, to reduce computational run times is to efficiently distribute, compute and gather the individuals amongst a cluster of computers or processing cores. Within this paper we present two methods of efficiently distributing the individuals such that they are computed in parallel. The first method is based on the recognition that SWMM 4.4 is a single threaded application. We can, therefore, place a wrapper that is multi-threaded in front of the SWMM execution step and compute the population in parallel on a multi-core machine. This method was implemented using the OpenMP framework, as OpenMP is available on compilers on all standard platform and, although not yet implemented, could be extended via the Message Passing Interface to run on very large MPI based clusters. The second method builds on the first and is designed for very large populations with a million, or more, individuals. It is based on the BOINC framework, which while it is estimated to only have a computational efficiency in the order of 50% of OpenMP or MPI is a reliable and established tool to scale beyond local computational clusters. In this implementation a group of individuals, in the order of one to ten thousand, are collected and distributed via BOINC. These individuals are then run on the remote computers using the OpenMP based parallel construct before the results are collected and collated.