Supporting Innovation in Programming Tools for Enabling Efficient Computing Everywhere – Københavns Universitet

Supporting Innovation in Programming Tools for Enabling Efficient Computing Everywhere

HIPERFIT TALK by Anton Lokhmotov (Dividiti)

Computer systems heterogeneity has become a widely accepted way to achieve high performance, importantly, in terms of energy efficiency, as well as execution speed. For example, modern systems-on-chip include several clusters of general-purpose processors (e.g. ARM big.LITTLE CPUs) and special-purpose accelerators (e.g. ARM Mali GPUs). The logic is almost impeccable. Using the hardware most suitable for the task in hand is almost guaranteed to result in the best performance. Where it all breaks down is writing the correct and efficient software in a portable and cost-effective way. Take OpenCL, for example, the most widely adopted standard for programming heterogeneous systems.

Activities around OpenCL can be categorised according to the three communities that carry them out: hardware vendors who shape and implement the standard; software developers who rely on the standard to implement their software; and tool developers who rely on the standard to implement their tools. Further subdivision happens at the industry and academia boundary. The hardware vendors belong to industry by definition. The tool developers today, however, mostly belong to academia due to the harsh economic reality: until a sufficient number of software developers adopt the technology there's no money in making tools. Meanwhile, OpenCL is often criticised for poor programmer productivity and performance portability, so the community of software developers is growing rather slowly. As a compiler engineer who used to work at a hardware company, occasionally helping developers optimise their software, I am acutely aware of the chasms that lie between the OpenCL communities today. Furthermore, my experience suggests that technology transfer can be stimulated only by simultaneously pushing from academia and pulling from industry. I have grown to believe that these disparate communities can come much closer together through an open collaboration platform. Imagine an online integrated development environment like Visual Studio or Eclipse.

An intuitive interface allows developers to perform typical GPU optimisation tasks like creating and rigorously comparing performance across a range of different devices to ensure performance portability. Integrated verification and checking tools help developers find bugs to ensure correctness portability. The community welcomes and grows best programming tools coming from academia, replacing the harmful effects of academic career pressures (which lead to many insufficiently developed and validated ideas being published) with the salutary effects of community support. The community also contributes performance-sensitive portions of their applications as benchmarks, replacing harmful synthetic benchmarks with representative workloads. Community-driven workload definition allows the hardware vendors to focus their optimisation efforts and design faster and more energy-efficient hardware.

The trialogue leads to innovation in applications and algorithms, eventually benefitting end users. I will present our vision and the steps we are taking towards enabling efficient computing everywhere.

Read more about HIPERFIT.