Refreshments 1:15 p.m.
Abstract
For a long time we lived in a world with clear distinctions between hardware design and computer programming. In today's world the distinctions between hardware and software are being increasingly blurred. To meet the ever increasing demands for processing we find ourselves resorting to multicore processors, computing n the cloud (e.g. using GPUs on Amazon's EC2 service), GPU programming, and FPGAs. Furthermore, we increasingly find ourselves having to map some computation onto a combination of hardware and software and we need the ability to "turn the dial" to shift the HW/SW boundary to meet requirements for performance, area, cost, power. However, the totally different models, languages, techniques and educational background required for each side of the HW/SW divide make this dial very hard to turn. We cannot meet tomorrow's computing demands using just multicore processors: we will need to resort to heterogeneous computing systems and we will need to develop models of
computation, languages, tools and techniques to allow us to map our applications to a diverse set of computing resources. This talk describes two projects that the speaker works on which try to help blur the distinction between hardware and software: (1) Kiwi, which is about compiling thread-parallel .NET programs into circuits; (2) Accelerator, which is an multi-target embedded domain specific data-parallel language that targets SSE3 vector instructions on multiple cores; GPUs; and FPGAs.
Bio
Satnam Singh's research interests include involves finding novel ways to program and use reconfigurable chips called FPGAs and in parallel functional programming. Satnam Singh completed his PhD at the University of Glasgow in 1991 where he devised a new way to program and analyze digital circuits described in a special functional programming language. He then went on to be an academic at the same university and lead several research projects that explored novel ways to exploit FPGA technology for applications like software radio, image processing and high resolution digital printing, and graphics. In 1998 he moved to San Jose California to join Xilinx's research lab where he developed a language called Lava in conjunction with Chalmers University which allows circuits to be laid out nicely on chips to give high performance and better utilization of silicon resources. In 2004 he joined Microsoft in Redmond Washington where we worked on a variety of techniques for producing con
current and parallel programs and in particular explored join patterns and software transactional memory. In 2006 he moved to Microsoft's research laboratory in Cambridge where he works on reconfigurable computing and parallel functional programming. He holds the Chair of Reconfigurable Systems at the University of Birmingham; is a fellow of the IET; a visiting professor at Imperial College; and a visiting lecturer at Chalmers in Gothenburg, Sweden.