ADCL: Abstract Data and Communication Library
ADCL is an application level communication library aiming at providing the highest possible performance for application level communication patterns, such as the n-D neighhorhood communication, within a given execution environment. The library provides for each communication pattern a large number of implementations and incorporates a runtime selection logic in order to choose the implementation leading to the highest performance of the application on the current platform. Two different runtime selection algorithms are currently available within ADCL: the library can either apply a brute force search strategy which tests all available implementations of a given communication pattern; alternatively, a heuristic relying on attributes characterizing an implementation has been developed in order to speed up the runtime decision procedure.
ADCL is not supposed to be a replacement for MPI, but on add-on library. In fact, ADCL relies and exploits many of the features of MPI, and does not offer for example point-to-point transfer primitives. ADCL also does not replace 'simple' collective operations such as broadcast and reductions, since there are abstractions for these operations available in MPI already.
The ADCL API offers high level interfaces of application level collective operations. The high level interfaces are required in order to be able to switch within the library the implementation of the according collective operation without modifying the application itself. Thus, ADCL complements functionality available within MPI.
Partial support for this work was provided by the National Science Foundation under award no. CNS-0846002. Any opinions, findings, and conclusions or recommendations expressed in thie material are those of the authors and do not necessarily reflect the views of the National Science Foundation.A detailed documentation of the API can be found here.