Abstract

A reduction is a parallel programming mechanism for combining two or more elements into one. Many parallel programming languages, tools and frameworks (e.g., OpenMP, MPI, etc.) directly support simple forms of reductions (e.g., building a total sum out of partial sums). Some of those tools and frameworks allow more complex reductions to be implemented as custom reductions. However, the success of network-based application frameworks like Hadoop have shown that there is a strong need for reductions of aggregate data structures, such as the union of sets or maps. Usually parallel programming frameworks on shared-memory systems do not support these types of complex reductions directly, and a user needs to implement them manually. To address the gap thereof, this paper proposes an object-oriented reduction framework that supports reductions of aggregate types, and proposes the nesting of reduction objects for flexible extensions of reduction operations. Based on the proposed framework, a reduction library (RedLib) has been developed for Java with direct support for many common reduction operations on collections and maps. Furthermore, the paper studies the usage of the framework for common and complex cases and evaluates its performance, based on operations found in standard benchmarks.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.