|SF Project Website||Download||Source Code Repository||AEGIS web interface|
Imagine a network (graph in mathematical parlance) of C++ objects wired in some arbitrary topology. Furthermore, imagine that that this graph object distributes the objects across multiple MPI processes, automatically handling object migration, performs load balancing, and migrates boundary data when nodes need to access neighbouring nodes of the network.
What you've imagined is Graphcode. Graphcode depends on Classdesc to perform the serialisation of objects required for migration between the different address spaces of different MPI processes.
Graphcode provides an abstraction of parallel programming that is as simple as data parallel programming, yet vastly more powerful in what it can represent. It represents, for example, a typical paradigm needed for mapping agent based models onto parallel computers.
Graphcode has been deployed in a combinatorial spacetime model (Madina, 2002), an artificial chemistry model (Madina, et al. 2003,2004) and integrated into the EcoLab simulation system, where it has been deployed into a spatial Ecolab model, and a model of Jellyfish migration.
Graphcode is downloadable as a standalone product from SourceForge, or is available as part of EcoLab system.
We have not yet thoroughly evaluated graphcode's performance, relative to more traditional techniques such as data parallel programming. In part the problem is in generating meaningful benchmarks. However, the jellyfish simulation has demonstrated a 40 times speedup over 100 Intel CPUs with 1 million jellyfish, indicating that it can be very scalable.