This Small Business Innovation Research (SBIR) Phase II research project aims to develop software technology to enable C++ programmers to easily program multicore chips produced by the leading processor hardware vendors. Physical limits are driving chipmakers to produce chips containing multiple processor cores, but existing methods for programming multicore chips are error-prone and difficult to use. The potential outcomes of this research project will enable C++ programmers to easily parallelize applications to run on multicore processors without restructuring their legacy applications. Cilk++ is a simple set of language extensions to C++, which, together with a powerful runtime platform, allows multicore processors to be programmed easily. Market research shows that global variables pose a major barrier to parallelizing legacy code. This research project seeks to understand the linguistics, implementation, and applicability of hypervariables, a new construct designed to solve data-race problems created by parallel accesses to global variables. The results of the project include software implementations of hyper-variables in the context of Cilk++, including modifications to the Cilk++ language, compiler, tools and runtime platform. Additionally, the project will produce engineering design documents, user documentation, and training and educational materials, and will evaluate this technology in customer applications.
In 2008, the leading processor manufacturers will ship over 100 million processors, with forecasts for over 75 percent of such processors be multicore. On the software side, the C++ programming language has become the standard langauge for developing applications that run on uniprocessor-based platforms. Although C++ programmers number well over 3 million, most lack the specialized training to use create correct, high-performing parallel programs. This research project will allow ordinary developers to multicore-enable legacy code and bring new multicore applications to market, thereby fulfilling the potential of multicore technology to help users of computers and personal appliances be more productive and to take advantage of the increased performance of computers in as diverse areas as health care, shopping, scientific advancement, entertainment, financial planning, and more. This research will advance the understanding of how multicore computers can be programmed effectively. The lessons of Cilk++, and the innovation of hypervariables in particular, will generalize to other programming languages, such as Java, C#, and Fortran. The educational and training materials will educate software engineers in parallel programming and expose them generally to the subtle issues of concurrency.