major push to master

20 views
Skip to first unread message

Xavier Rubio

unread,
Mar 26, 2014, 7:23:18 AM3/26/14
to pandor...@googlegroups.com
Dear all, I just merged the branch where we were developing a set of
new features to master:

1. Scheduler strategy
The user can now choose a particular Scheduler in compilation time, in the form:

SampleWorld world(sim, SampleWorld::useSpacePartition(resultsFile, overlap));

for space partitioning of a run in different computer nodes using both
MPI and OpenMP or:

SampleWorld world(sim, SampleWorld::useOpenMPSingleNode(resultsFile));

for execution in one computer node with shared memory distribution
using only OpenMP (this is the default Scheduler, that will be used
unless one is specified).

In python:
myWorld = SampleWorld(sim, SampleWorld.useSpacePartition(resultsFile, overlap))
or:
myWorld = SampleWorld(sim, SampleWorld.useOpenMPSingleNode(resultsFile))

In this way any new implementation of the Scheduler can be used
straight as long as it implements the pure virtual methods defined in
Scheduler.hxx

2. Sequential Serialization
There are two different serializers, one used by the spatial
partitioning Scheduler and a sequential version, that can be used by
any Scheduler that is only using a computer node.

3. Boundaries
We have clarified the way a simulation access the boundaries of its
World. The way to check them is to use the method getBoundaries, as:
Engine::Point2D<int> index;
for(index._x = getBoundaries().left();
index._x<=getBoundaries().right(); index._x++)
{
for(index._y = getBoundaries().top();
index._y<=getBoundaries().bottom(); index._y++)
{
setValue("resources", index, 1);
}
}

In python:
for i in range(self.getBoundaries().left, self.getBoundaries().right+1):
for j in range(self.getBoundaries().top, self.getBoundaries().bottom+1):
setValue('resources', Point2DInt(i,j), 1)

A c++11 ranged for loop is also possible now (you are strongly
encouraged to use it):
for(auto index : getBoundaries)
{
setValue("resources", index, 1);
}

4. Size
There is a new class Size, that is used to manage any size used in the
framework.

5. testing
Different unit and functional tests have been added, both in C++ and python.

These changes have broken the interface, as there are several method
with different (yet similar) signatures, specially regarding size and
boundaries. Apologies for any inconvenience, and please feel free to
report any problem you can have with that; we'll try to minimize
future interface changes, as these were the most important
modifications in the face of a first stable release.

If you want to continue with the previous version of Pandora you can
always use the tag 'preScheduler'.

Finally, a full list of solved issues and new features can be found in github:
https://github.com/xrubio/pandora/issues?milestone=1&page=1&state=closed

All best,

Xavi
Reply all
Reply to author
Forward
0 new messages