In this paper, we propose a novel set of techniques that allows
multicore programmers and architects alike to rapidly estimate the availability
of parallelism in their target programs. We present p-ray, which, given an
application and the input, shows the nested relationship and availability of
parallelism across different regions in complex programs, using a parallelism
chart, or p-chart. P-ray also prioritizes the regions, suggesting the ordering
that the programmer should attack them in, based on the estimated parallelism
and the code complexity. P-ray can also estimate the kind of parallelism (TLP,
DLP or ILP) that is found in each region, which allows the user to determine
the available techniques are likely to work. In this paper, we show three case
studies, including SpecInt's gzip, and Mat2C's capacitor, and Nasa7's Vpenta,
and follow up with results which compare actual parallelization results of a
benchmark suite against the results predicted by p-ray.
Pre-2018 CSE ID: CS2009-0950