SHAD: The Scalable High-Performance Algorithms and Data-Structures Library

The unprecedented amount of data that needs to be processed in emerging data analytics applications poses novel challenges to industry and academia. Scalability and high performance become more than a desirable feature because, due to the scale and the nature of the problems, they draw the line between what is achievable and what is unfeasible. In this paper, we propose SHAD, the Scalable High-performance Algorithms and Data-structures library. SHAD adopts a modular design that confines low level details and promotes reuse. SHAD's core is built on an Abstract Runtime Interface which enhances portability and identifies the minimal set of features of the underlying system required by the framework. The core library includes common data-structures such as: Array, Vector, Map and Set. These are designed to accommodate significant amount of data which can be accessed in massively parallel environments, and used as building blocks for SHAD extensions, i.e. higher level software libraries. We have validated and evaluated our design with a performance and scalability study of the core components of the library. We have validated the design flexibility by proposing a Graph Library as an example of SHAD extension, which implements two different graph data-structures; we evaluate their performance with a set of graph applications. Experimental results show that the approach is promising in terms of both performance and scalability. On a distributed system with 320 cores, SHAD Arrays are able to sustain a throughput of 65 billion operations per second, while SHAD Maps sustain 1 billion of operations per second. Algorithms implemented using the Graph Library exhibit performance and scalability comparable to a custom solution, but with smaller development effort.

[1]  Mateo Valero,et al.  Scaling Irregular Applications through Data Aggregation and Software Multithreading , 2014, 2014 IEEE 28th International Parallel and Distributed Processing Symposium.

[2]  Torsten Hoefler,et al.  Active pebbles: parallel programming for data-driven applications , 2011, ICS '11.

[3]  Joseph Gonzalez,et al.  Residual Splash for Optimally Parallelizing Belief Propagation , 2009, AISTATS.

[4]  E. Prud hommeaux,et al.  SPARQL query language for RDF , 2011 .

[5]  David A. Bader,et al.  STINGER: High performance data structure for streaming graphs , 2012, 2012 IEEE Conference on High Performance Extreme Computing.

[6]  James Reinders,et al.  Intel threading building blocks - outfitting C++ for multi-core processor parallelism , 2007 .

[7]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[8]  Chavarria-Miranda Daniel,et al.  GraQL: A Query Language for High-Performance Attributed Graph Databases , 2016 .

[9]  Karl Fürlinger,et al.  DASH: A C++ PGAS Library for Distributed Data Structures and Parallel Algorithms , 2016, 2016 IEEE 18th International Conference on High Performance Computing and Communications; IEEE 14th International Conference on Smart City; IEEE 2nd International Conference on Data Science and Systems (HPCC/SmartCity/DSS).

[11]  Alvin AuYoung,et al.  Presto: distributed machine learning and graph processing with sparse matrices , 2013, EuroSys '13.

[12]  Athanassios Siapas,et al.  Criticality and Parallelism in Combinatorial Optimization , 1996, Science.

[13]  Vito Giovanni Castellana,et al.  Scaling Semantic Graph Databases in Size and Performance , 2014, IEEE Micro.

[14]  Murtaza Haider,et al.  Beyond the hype: Big data concepts, methods, and analytics , 2015, Int. J. Inf. Manag..

[15]  John N. Tsitsiklis,et al.  Parallel and distributed computation , 1989 .

[16]  Katherine A. Yelick,et al.  UPC++: A PGAS Extension for C++ , 2014, 2014 IEEE 28th International Parallel and Distributed Processing Symposium.