The HPC community have set themselves the target of reaching exa-scale performance by 2020. It is not a question of whether this target will be met, but instead whether or not an exa-scale machine can be programmed and used effectively to perform science at a scale never before attainable. There are many challenges in many different areas to overcome if the community are to scale their current scientific codes up to the exa-flop level and one of the approaches to solving this is through the use of co-design, where interdisciplinary teams work together to solve a specific problem.
However this development methodology is still relatively immature and in this report we gather the opinions of co-design from those in the HPC field, consider the positive and negative impact of such an approach, survey how co-design is currently being used and make some recommendations about how European projects might more effectively take advantage of this methodology to help solve the exa-scale challenge.
Co-design is a process where partnerships are created involving parties with distinct expertise who then collaborate to solve a specific problem. Central to applying this to the HPC field is the idea that the HPC life cycle has now become so complex that traditional approaches of domain experts developing scientific codes in isolation to their field of expertise will not be enough to reach exa-scale. Instead the co-design development methodology is oriented around a feedback loop where a specific application or science drives interdisciplinary teams and the underlying facets, such as architecture and language design, interact closely with the scientific codes to ensure that these are fit for the task in hand.
Co-design has been very successfully used in the production of a number of HPC machines where application needs have been taken into account from an early stage and this has resulted in some hugely successful products such as the BlueGene, NEC Earth Simulator and K computer. However co-design in more general HPC application development teams is still seen by many as being at a relatively early and untested stage. The past few years have seen a number of projects and centres trialling the methodology and a variety of successes relating to these have been reported. However, due to the immature nature of this approach its implementation has been quite different by different organisations and there is still no overall answer as to whether co-design, and in what form, should be adopted more wholesale by development teams to meet the exa-scale challenge. The aim of this work is to investigate the current state of co-design and aims to answer