Skip to content
This repository has been archived by the owner on Jul 16, 2024. It is now read-only.

GSoC 2010 MPI

magnific0 edited this page Feb 25, 2014 · 1 revision

The Massively Parallel Islands via MPI project tries to change PaGMO's parallelisation which is based on shared-memory multi-threading. Thanks to its coarse-grained approach, the generalised island model is suitable for massively parallel implementations, thus giving the possibility to exploit clusters and/or distributed computing environments. The task proposed here is to extend PaGMO's base classes to be able to interface to clusters (e.g., MPI, parallel, IPython) or distributed computing environments (BOINC). This task has been discussed within the PaGMO developers and several ideas have been put forward to approach the connected issues, including: objects serialisation. creation of a polymorphic island class extensible from Python and able to interface to BOINC/Ipython/MPI.

Student:

Mentors: Francesco Biscani, Juxi Leitner

Previous Work / Context

to be added

Technical Details: parallelisation is provided in PaGMO via the Boost thread library, used to open threads in the pagmo::island class each time an optimisation algorithm is called. The same model can be in principle used to dispatch optimisation tasks to networked computers, either in a traditional cluster environment or in a distributed-computing architecture. The task here would involve modifications to the pagmo::island class so that it would behave polymorphically when launching the algorithm. In other words, in addition to the current island class (which would be renamed local_island), additional island types would be introduced (e.g., mpi_island, ipython_island, etc.) which would distribute the computation over the network.

The task would involve the definition of the clustering strategy (MPI, BOINC or Ipython), possibly the serialisation of PaGMO's classes (needed to distribute the objects around the network) and the final coding and testing of the polymorphic island class.

Timeline

(Phase 1)

  • ~~ - 21 June : Finish serializing all the Pagmo classes

    • ~~ - 18 June : Finish serializing the derived algorithm and problem classes
    • 18 - 21 June : Serialize the population,migration, archipelago and island classes, and test the serialization by successfully storing the island instances after an evolution step into text archives, then recover them and user the result for the next evolution step (first test with one problem/algorithm/migration policy)
    • 21 - 23 June : make sure documentation is exhaustive and test serialization
  • 24 June - 14 July: MPI Implementation

    • 24 June: integrate the Boost MPI libraries
    • 24 - 27 June : Document on and analyse parallelization approach and scheduling of processes (and thread safety on each node as well)
    • 27 June - 14 July: MPI implementation (if finished earlier and everything is tested and documented go on with writing the python wrappers)

(Phase 2)

  • Python wrappers and integration with IPython.
  • Write documentation and tutorials on the new features
  • If everything goes as planned go on with BOINC

Documentation

... of the ongoing activities, try to post something every week or fortnight

Reports

  • list of reports produced
Clone this wiki locally