Compiler and Runtime SystemAt a glance
This goal of this research is to extend existing Cray XMT C/C++ compiler and run-time framework to support alternative parallel code structures and exploit XMT architectural features. This involves making several enhancements to the Cray XMT's compiler that result in productivity and performance benefits. These extensions increase Cray compiler effectiveness for many classes of applications by better thread management, locality optimizations, and providing options for deterministic scheduling of the threads.
“The programming environment on the Cray XMT is quite sophisticated and supports automatic parallelization, as well as automatic multithreaded code generation. However, several important features are missing from the environment, including support for task parallelism, exposing more detailed resource control to the programmer, as well as optimizations enabled by the newer architectural features available on the XMT.”- PNNL Task Lead Daniel ChavarriaWhat we do
At Pacific Northwest National Laboratory's (PNNL) CASS-MT, the research team is making it a priority to develop techniques and tools to improve the success of various applications used on the XMT. Programming languages and their compilers tell a computer what to do. Programming languages can be as different from each other as Spanish is from English and German. The compiler acts as an interpreter between the human and the machine - translating source code (closer to human language) into the machine's unique language. The Cray XMT uses an extendd C/C++ programming language. By improving the translator, you ultimately can improve the speed and capabilities of the machine.
The XMT inter-node communication architecture is based on the XT-4's interconnect, which is designed for distributed memory systems and applications that exploit locality. They team will research several enhancements to the MTA programming model and compilation process. Research areas include: Compiler thread generation and destruction exposed to the programmer; Result reproducibility and/or accuracy of transient reductions; Mechanisms for exploiting locality to improve scalability.How we do it
The current programming environment on the XMT focuses on data-parallel compilation of loops nests. That is the threads on the XMT system execute the same loop bodies over different portions of the data. This approach enables the utilization of multiprocessor, multithreaded parallelism across large amounts of data. The compiler and runtime systems in cooperation, determine when to create and destroy threads and how to map loop iterations to threads. However, for some application areas this is not enough and more detailed control of the parallelism is needed.
CASS-MT's team will make these capabilities available to users of the XMT to expand and improve existing and future applications.
Peter Hui, Task Lead, PNNL