The mission of the Co-design team is to organize the "co-design" between the hardware and software of the exascale system. It is unpractical to design the many-core complex processor of today without taking into account the requirement of applications. At the same time, it is also unrealistic to develop applications without taking into account the characteristics of the processors on which it will run. The term "Co-design" means we will modify both hardware and software to resolve bottlenecks and achieve best performance.
In the early phase, the team lead the effort to estimate the performance of key applications on the new machine, find out the bottlenecks in both the hardware and software sides, and propose improvements.
In the late phase, the team will study the interaction between the hardware, system software, and applications, and investigate how the performance can be improved.
In addition, the team takes into account the direction of the evolution of processors, study the new algorithms which can better utilized the new hardware, and develop DSL (domain-specific language) and frameworks for application development, which help the implementation of new algorithms.