Enhancing iteration performance on distributed task-based workflows

08/07/2023
by   Alex Barceló, et al.
0

Task-based programming models have proven to be a robust and versatile way to approach development of applications for distributed environments. They provide natural programming patterns with high performance. However, execution on this paradigm can be very sensitive to granularity –i.e., the quantity and execution length of tasks. Granularity is often linked with the block size of the data, and finding the optimal block size has several challenges, as it requires inner knowledge of the computing environment. Our proposal is to supplement the task-based programming model with a new mechanism –our SplIter proposal. At its core, the SplIter provides a transparent way to split a collection into partitions (logical groups of blocks, obtained without any transfers nor data rearrangement), which can then be iterated. Tasks are linked to those partitions, which means that SplIter breaks the dependency between block size and task granularity. The evaluation shows that the SplIter is able to achieve performance improvements of over one order of magnitude when compared to the baseline, and it is either competitive or strictly better (depending on application characteristics) to the competitor alternative. We have chosen different applications covering a wide variety of scenarios; those applications are representatives of a broader set of applications and domains. The changes required in the source code of a task-based application are minimal, preserving the high programmability of the programming model. Two different state-of-the-art task-based frameworks have been evaluated for all the applications: COMPSs and Dask, showing that the SplIter can be effectively used within different frameworks.

READ FULL TEXT

page 5

page 9

page 12

page 13

research
01/10/2018

DuctTeip: An efficient programming model for distributed task based parallel computing

Current high-performance computer systems used for scientific computing ...
research
08/15/2019

Task Bench: A Parameterized Benchmark for Evaluating Parallel Runtime Performance

We present Task Bench, a parameterized benchmark designed to explore the...
research
04/18/2019

ClangJIT: Enhancing C++ with Just-in-Time Compilation

The C++ programming language is not only a keystone of the high-performa...
research
11/19/2022

Block size estimation for data partitioning in HPC applications using machine learning techniques

The extensive use of HPC infrastructures and frameworks for running data...
research
10/26/2018

AutoParallel: A Python module for automatic parallelization and distributed execution of affine loop nests

The last improvements in programming languages, programming models, and ...
research
08/25/2018

StreamChain: Do Blockchains Need Blocks?

Processing at block granularity and blockchains seem inseparable. The or...

Please sign up or login with your details

Forgot password? Click here to reset