A few weeks ago we started the development of NANOS++ for Clusters. As everyone would expect for the name, the main goal is to support the execution of parallel applications on cluster environments using the current programming models available at NANOS++. The starting design has been driven by the following ideas:
- Low cohesion with the rest of the runtimei
- Minimal impact on applications code
- Independent of the underlying network technology
So far the initial design has been quite successful following these three objectives. The cluster support has been added as a plugin which can be enabled during application runtime. It has been developed on MareNostrum, a cluster of PowerPC nodes, but it should work on other platforms as the code is architecture-independent. Network support is provided by GasNet, a low-level networking layer oriented to build runtime libraries on top of it which supports several network technologies.
We have succeed executing applications coded using the OmpSs pragmas. A dense Matrixmultiply has been able to run up to 64 nodes, however the current design limits the scalability of the system up to 4 nodes.
The next stages of the development will be focused on allowing the system to scale while using a higher number of nodes, enabling instrumentation features and adding more applications.