z-logo
open-access-imgOpen Access
Runtime Parallelization of Static and Dynamic Irregular Array of Array References
Author(s) -
Parwat Singh Anjanaa,
N. Naga Maruthia,
Sagar Gujjunoori,
Madhu Orugantib
Publication year - 2018
Publication title -
international journal of engineering and technology
Language(s) - English
Resource type - Journals
ISSN - 2227-524X
DOI - 10.14419/ijet.v7i4.6.20452
Subject(s) - computer science , parallel computing , compile time , compiler , automatic parallelization , runtime system , scheduling (production processes) , synchronization (alternating current) , schedule , multiprocessing , programming language , operating system , computer network , channel (broadcasting) , operations management , economics
The advancement of computer systems such as multi-core and multiprocessor systems resulted in much faster computing than earlier. However, the efficient utilization of these rich computing resources is still an emerging area. For efficient utilization of computing resources, many optimization techniques have been developed, some techniques at compile time and some at runtime. When all the information required for parallel execution is known at compile time, then optimization compilers can reasonably parallelize a sequential program. However, optimization compiler fails when it encounters compile time unknowns in the program. A conventional solution for such problem can be performing parallelization at runtime. In this article, we propose three different solutions to parallelize a loop having an irregularity in the array of array references, with and without dependencies. More specifically, we introduce runtime check based parallelization technique for the static irregular references without dependency, Inspector-Executor based parallelization technique for static irregular references with dependencies, and finally Speculative parallelization technique (BitTLS) for dynamic irregular references with dependencies. For pro ling the runtime information, shared and private data structures are used. To detect the dependencies between footprints and for synchronization of threads at runtime, we use bit level operations. A window based scheduling policy is employed to schedule the iterations to the threads.   

The content you want is available to Zendy users.

Already have an account? Click here to sign in.
Having issues? You can contact us here