ENCORE: Enabling Technologies for a Programmable Many-CORE
Description
Design complexity and power density implications stopped the trend towards faster single-core processors. The current trend is to double the core count every 18 months, leading to chips with 100+ cores in 10-15 years. Developing parallel applications to harness such multicores is the key challenge for scalable computing systems.
The ENCORE project aimed to achieve a breakthrough on the usability, reliability, code portability, and performance scalability of such multicores. The project achieved this through three main contributions.
First, it defined an easy to use parallel programming model that offers code portability across several architectures. Second, it developed a runtime management system that will dynamically detect, manage, and exploit parallelism, data locality, and shared resources. And third, it provided adequate hardware support for the parallel programming and runtime environment that ensures scalability, performance, and cost-efficiency.
The technology was developed and evaluated using multiple applications, provided by the partners, or industry-standard benchmarks, ranging from massively parallel high-performance computing codes, where performance and efficiency are paramount, to embedded parallel workloads with strong real-time and energy constraints.
The project integrated all partners under a common runtime system running on real multicore platforms, a shared FPGA architecture prototype, and a large-scale software simulated architecture. Architecture features were validated through implementation on ARM's detailed development infrastructure.
ENCORE took a holistic approach to parallelization and programmability by analyzing the requirements of several relevant applications ranging from High Performance Computing to embedded multicore, by parallelizing these applications using the proposed programming model, by optimizing the runtime system for a range of parallel architectures, and by developing hardware support for the runtime system.