Objective: As the evolutionary process of parallel system architectures marches on, the cost involved in software development and maintenance becomes prohibitive to keep track with the current state of the evolution. A cost-effective alternative is to remove the architectural dependencies from the application software by introducing a function layer which provides an abstract (object oriented) interface mechanism. The abstraction provides an architecture independent programming environment while the function layer adapts to the various parallel system architectures. The ddlib is a function layer which provides an architecture independent data distribution/redistribution function protocol so that parallel application programs can be developed without being affected by the evolution process.
Approach: Data decomposition plays an important role in parallel applications for distributing the load and regulating the inter-node communication. The issues involved in data decomposition are 1) decomposition types, 2) dynamic mapping between the data and allocated nodes, and 3)transition between one decomposition type to another. The decom-position types were divided into the standard and the customized type depending on the homogeneity of the data segmentation among the nodes. The dynamic mapping and decomposition type transition were implemented assuming an hypercube architecture topology in order to accommodate a wide range of architectural topologies.
Accomplishments: The ddlib is an automatic data distribution and redistribution tool for any MIMD architecture. The data distribution functions provide seven standard distribution types; broadcast, horizontal, grid, vertical, horizontal with overlap, grid with overlap, and vertical with overlap. The above functions are available for both node only and host-node mode. This library was designed to provide an automatic data distribution and redistribution of 2D array in a MIMD architecture for data parallel applications. The ddlib is available on NX, EXPRESS, and CrOS.Xmosaic documentation is provided through HPCC site.
Significance: The ddlib provides an architecture independent programming environment which shields the application programmer from the complexities of the various parallel systems while allowing fast adaptation. For data parallel applications, the parallelization can be easily achieved by decomposing the data with a proper ddlib function call prior to executing the function without any alterations to the existing function. The ddlib contributes to the cost-effective parallel software development and maintenance.
Status/Plans: The software is available through the ESS Software Exchange.
Point of Contact: