Computing today is at a critical juncture as processors move away from uniprocessors to multicore processors. Without innovations in how to writeprograms to make use of multiple processing cores, software vendors will no longer have access to increasing processing performance, a phenomenon that has driven the growth of the computer industry for over four decades. Realizing the enormity of the situation many leaders have put parallel computing high on their list of critical research issues and many researchers are trying to build on four decades of knowledge to make progress in this critical area.
This research is investigating a novel approach to attacking this critical problem, one that is counter to much of the prevailing wisdom on parallel execution. The approach couples widely used sequential programrepresentations with a novel dynamic parallel execution model to achieve parallel execution. Initial experience with this new approach has been very promising: it can achieve parallelism comparable to, and sometimes better than, applications parallelized with traditional techniques, but can do so without the drawbacks of the traditional techniques. This work investigates the applicability and effectiveness of this new approach for a variety of problem areas, including database, networking, and embedded applications. The work will also investigate the impact of the novel parallel execution model on the design of processors and chip multiprocessors. Broader impacts include a potential transformation in how a variety of important application programs are written for parallel execution on multicore processors and the consequent design of such processors.
Computing devices are pervasive, and most common devices have multiple processing cores (i.e., are multicore processors). Making efficient use of multicore processors is a challenging problem whose solution is critical to the continued advances in, and proliferation of, computing devices. The research project made two important contributions to addressing the challenges that future multicore processors are likely to face. First, the research developed a novel programming approach where the program is an ordered program, which makes programming easier, yet the program is executed in parallel "under the hood". This proposed approach attempts to replicate the model that was very successful in facilitating advances in microprocessors from about 1995 onwards---where sequential programs were transparently executed in parallel to improve performance---but does so for multicore processors. The new approach was tested out for a variety of application programs on a variety of commercial platforms, achieving results that were better than the traditional parallel programming approaches. Second, the project developed a novel approach to achieve the efficient execution of a parallel program, without additional effort required from the programmer of the application. Though the problem has been known for a while, a practical solution has been challenging because of the complex interplay between the program and underlying host system. Moreover, the importance of achieving efficient execution is continuing to increase. The techniques developed in the project optimize a program’s parallel execution to best match the hardware resource capabilities, while optimizing diverse efficiency metrics. Experimental results on different commercial platforms were carried out to demonstrate the effectiveness of the techniques over existing approaches. In addition to the above, the project developed a variety of other techniques to improve the design of multicore processors. The results of the project have the potential to have significant impact on the design of multicore processors across the computing spectrum ranging from smart phones to servers. It is likely that the techniques developed in the research will either be directly employed, or will influence the techniques that are widely deployed in ubiquitous computing devices in the next decade. In addition, the research project supported three graduate research assistants. They were trained to become independent researchers and engineers who are expected to not only use their training to develop new information technology products, but also to further train and mentor others in computer technology-related research and product development.