BOF: Parallel Computing, the new frontier of WORA
Abstract
'Parallel computing, the new frontier of WORA (or how we learned to stop worrying and love parallel computing)'
The available computing power increased in the last decades following the Moore's Law - a double in the computing power every roughly 1,5 years. This has been largely achieved by increasing the clock frequency, whose grown is unfortunately bound to well-known physical limits. To deliver even more processing power, people builds multi-processor computers, a typical scenario for medium / large corporate or scientific institutions, which usually adopts specifically designed software.
With the lowering of the CPU cost, multi-processor systems are becoming available to the masses - laptops and desktops with 2/4/8 cores will be soon a common scenario. Furthermore, using simple open source software such as Jini and Rio, it is now possible to set up a cheap distributed computing facility in small corporate networks or even at home. Last but not least, people can buy access to large multiprocessor 'grid' systems ( e.g. Sun Microsystems' Grid Compute Server Utility) at a very convenient price (e.g. 1$ per CPU hour).
These scenarios are the new frontier of WORA: applications written once and able to run on not only on different operating systems, but even on different multi-processing environments, from the multi-core up to the Grid, taking advantage of all the computing power they find. This is a real paradigm shift with an impact on software architecture and design.
In this presentation we will talk about our experience with Pleiades, a 100% Java image processing application designed for solving a typical problem of astrophotography: extracting the most information out of a stack of thousands of photos of a planet. It's a task that was originally specific of the professional scientists and has entered the domain of amateurs, and with growing requirements. We will show how, using common good practices of software design, we implemented Pleiades as a WORA application that runs on a single CPU, on a multi-core, on a network based on Jini / Rio and even on the Sun Grid. In our approach the CPU availability has been considered as just an architectural facility that must be decoupled from design as much as possible, just the way as e.g. JDBC abstracts the access to a SQL database. We will present some demos and comment the issues we have found and a few approaches to address them.
Host(s)