As industry moves from single processor systems to chip multiprocessors in the general
purpose community, it is becoming increasingly important for research to help enable this
transition by developing tools that assist programmers in developing applications for these systems.
Compilers will play an important role in this transition. There has been a wealth of
past research developing compilation tools to enable high-performance computing, which has
utilized multiprocessor systems for years. However, there is a gap between these applications
and the general purpose driving applications of the future. This thesis will provide an evaluation
of four representative benchmarks and provide insights into what new research needs to
be completed in order to extend past work to these future applications.
Much of the research in parallelizing compilers has focused on scientific applications that
are rich in scalable inner loop parallelism. Many of these applications are written using Fortran
and perform repetitive calculations on large arrays of data. While C implementations exist,
these applications do not take advantage of many of the features available in C. They are similar
in structure to their Fortran counterparts and therefore do not suffer the same complications as
general purpose applications.
Future general purpose applications exhibit some of the characteristics of scientific applications.
This thesis contends that these applications will generally model the physical world,
which naturally contains large amounts of inherent parallelism. However, unlike past scientific
applications, these applications commonly take advantage of the additional features provided
by C, including complicated memory usage patterns and large code bases that perform a bulk of
similar tasks. By evaluating the transformation and analysis requirements for attaining parallel
implementations of four representative benchmarks, this thesis motivates important research
problems for the IMPACT compiler for enabling this important transition in general purpose
computing.