Imagine developing an app that could run on any device scale, from a tiny wireless mote to a massive cloud datacenter. This is the vision of the AnyScale Apps project, a 4-year, £1.1m EPSRC-funded research proposal.
The project brings together three of the UK’s strongest teams in many-core and distributed computing combined with Robotics and Machine Learning, at the University of Glasgow, University of Edinburgh and University of Manchester. The three universities have research groups working on runtime adaptation, resource awareness and app migration. Industrial support and expertise come from ARM, Amazon and Google.
The AnyScale Proposal
The volume and variety of contemporary compute devices is immense; given this highly connected environment for computation, how can we support the developer in deploying software transparently at multiple compute scales? A developer should be able to create an app at an appropriately high level of abstraction, then deploy seamlessly across any scale, from a smartphone to a vitalised cloud cluster.
At present, apps are often unable to take advantage of available parallelism, and effectively their app is partially evaluated for a particular platform. Whilst simple examples exist of computation occurring at multiple scales during a workflow (a photo may be altered on a phone, edited in detail on a laptop, then processed by a social network in the cloud, for instance), we propose a more general approach.
A key enabler of the AnyScale concept is the policy to determine where computation takes place, and what adaptive mechanisms can be applied to take advantage of scale. The app developer can specify computation abstractly, and the run-time system determines scheduling and adaptation based on resource availability of cost – benefit trade-offs. Not only does AnyScale consider adaptation in terms of computation power and parallelism, we also consider trade-offs in terms of accuracy versus speed and power consumption.
Ultimately, the project aims to bring about a paradigm shift in app development in order to match the dramatic changes of the underlying execution platform over the past decade.