I am a researcher at Microsoft's Cambridge UK lab and I also hold the Chair of Reconfigurable Systems at the University of Birmingham. I currently work on two research topics:
- Alchemy: Transmuting Programs into Circuits for computing with reduced latency or energy consumption.
- The compilation of data-parallel programs written in C++ and .NET langauges like C# into FPGA circuits.
- The Kiwi project with David Greaves which synthesizes circuits from high level circuit models written using regular multi-threaded code in languages like C#.
- Synthesis of C programs that manipulate dynamic data structurs in the heap.
- Synthesis of data-parallel programs in C++, C# and F# written with using the Microsoft Accelerator V2 library into FPGAs for co-processing.
- High level techniques for designing low level circuits. I have re-implemented my Lava system in C# and F# and I have made HLINQ which is a circuit generator for LINQ queries.
- Evaluation and experimentation with alternative hardware description techniques with a focus on Bluespec and Esterel.
- Concurrent and Parallel Programming in Haskell for exploiting the potential of pure functional programming for exploiting parallel computing resources in a civilized manner.
- Specifically, I have been working on the ThreadScope profiler to help understand the behavior of parallel and concurrent Haskell programs.
- Higher level data-parallel programming models based on Accelerator.
- The compilation of recursive Haskell funcitons into circuits.
- Current conference and workshop organization:
Previosuly I was on the programme committee for First Workshop on the Intersections of Computer Architecture and Reconfigurable Logic (CARL 2010) . I also co-chaired the First European NetFPGA Developers Workshop (EURODEV) in Cambridge. I was also the publicity chair for FPGA 2011 and the general chair and finance chair for MEMOCODE 2011. I also co-organized the DATE 2011 workshop called Design Methods and Tools for FPGA-Based Acceleration of Scientific Computing.
I have served on several programme committees including the POPL ERC, ICFP, FCCM, FPGA, FPL, FPT, DATE, FMCAD, DCC, HFL, DAMP, CARL, CHANGE and HEART. I chaired the system level modeling track for DATE for three years and I serve on the high level synthesis track committee. I am also a member of IFIP Working Group 2.8 on functional programming. I am a visiting professor at the department of electronics and electrical engineering at Imperial College in London; I am a visiting lecturer at Chalmers in Gothenberg Sweden; and I am a fellow of the IET and I am a Senior Member of the IEEE and the ACM. I have over 80 publications some of which are shown below.
I have an MSDN blog which currently discussed GPGPU and x64 SIMD multicore programming from F# and C# and well as practical aspects of programming in Haskell.
Email: satnams@microsoft.com
Phone: +44 1223 479905
UK cell: +44 7979 648412. USA cell: +1 206 330 1580
Address: Microsoft, 7 JJ Thomson Avenue, Cambridge, CB3 0FB, United Kingdom.
- Dan Ghica, Alex Smith, and Satnam Singh, Compiling Affine Recursion into Static Hardware, in The 16th ACM SIGPLAN International Conference on Functional Programming, ACM, 19 September 2011
- Satnam Singh, Computing Without Processors, in Communications of the ACM, ACM, 1 August 2011
- David Greaves and Satnam Singh, Distributing C# Methods and Threads over Ethernet-connected FPGAs using Kiwi, in Ninth ACM/IEEE International Conference on Formal Methods and Models for Codesign, IEEE, 11 July 2011
- Alexander Cole, Alistair McEwan, and satnams, An Analysis of Programmer Productivity versus Performance for High Level Data Parallel Programming, in Communicating Processor Architectures, Elsevier, 19 June 2011
- Anil Madhavapeddy and Satnam Singh, Reconfigurable Data Processing for Clouds, in FPGAs for Custom Computing Machines 2011, 2 May 2011
- Oriol Arcas, Adrian Cristal, Ibrahim Hur, Otto Pflücker, Satnam Singh, Nehir Somez, and Osman Unsal, TMbox: A Flexible and Reconfigurable 16-core Hybrid Transactional Memory System, in FPGAs for Custom Computing Machines 2011, IEEE Computer Society, 1 May 2011
- Oriol Arcas, Adrian Cristal, Ibrahim Hur, Satnam Singh, and Nehir Somez, From Plasma to BeeFarm: Design Issues and Experience of an FPGA-based Multicore Prototype, in 7th International Symposium on Applied Reconfigurable Computing (ARC 2011), Springer Verlag, 23 March 2011
- Satnam Singh, The RLOC is Dead -- Long Live the RLOC, in ACM/SIGA International Symposium on Field Programmable Gate Arrays (FPGA), ACM, 27 February 2011
- Leopold Haller and Satnam Singh, Relieving Capacity Limits on FPGA-Based SAT-Solvers, in to appear in FMCAD 2010, 20 October 2010
- David Greaves and Satnam Singh, Designing Application Specific Circuits with Concurrent C# Programs, in Eighth ACM/IEEE International Conference on Formal Methods and Models for Codesign, IEEE, 26 July 2010
- Barry Bond, Kerry Hammil, Lubomir Litchev, and Satnam Singh, FPGA Circuit Synthesis of Accelerator Data-Parallel Programs, in FPGAs for Custom Computing Machines, IEEE Computer Society, 4 May 2010
- Jiří Šimša and Satnam Singh, Designing Hardware with Dynamic Memory Abstraction, in ACM/SIGA International Symposium on Field Programmable Gate Arrays (FPGA), Association for Computing Machinery, Inc., 22 February 2010
- Byron Cook, Ashutosh Gupta, Stephen Magill, Andrey Rybalchenko, Jiří Šimša, Satnam Singh, and Viktor Vafeiadis, Finding heap-bounds for hardware synthesis, in Formal Methods in Computer Aided Design (FMCAD), 15 November 2009
- Simon Marlow, Simon Peyton Jones, and Satnam Singh, Runtime Support for Multicore Haskell, in ICFP 2009, Association for Computing Machinery, Inc., 5 September 2009
- Don Jones Jr., Simon Marlow, and Satnam Singh, Parallel Performance Tuning for Haskell, in ACM SIGPLAN 2009 Haskell Symposium, Association for Computing Machinery, Inc., 3 September 2009
- Satnam Singh, Satnam Singh. Design and Verification of Peripheral Control Circuits in Esterel, in Journal of Concurrency and Computation., Wiley, 5 May 2009
- Satnam Singh and Simon Peyton Jones, A Tutorial on Parallel and Concurrent Programming in Haskell, in Advanced Functional Programming Summer School 2008, Springer Verlag, Nijmegen, Holland, May 2009
- David J. Greaves and Satnam Singh, Exploiting System-Level Concurrency Abstractions for Hardware Descriptions, no. MSR-TR-2009-48, 22 April 2009
- Satnam Singh, A Bluespec Implementation of an FPGA-based Photoshop Plug-In, in HFL 2009., 28 March 2009
- Satnam Singh, David Greaves, and Sutirtha Sanyal, Synthesis of a Parallel Smith-Waterman Sequence Alignment Kernel into FPGA Hardware, in Many-Core and Reconfigurable Supercomputing Conference 2009, Berlin., IEEE Computer Society, March 2009
- David Greaves and Satnam Singh, Application Specific Circuits with Concurrent C# Programs, in Draft under submission to a conference., IEEE, 5 February 2009
- Byron Cook, Ashutosh Gupta, Satnam Singh, and Viktor Vafeiadis, Gate Synthesis for C Programs with Heap, in Draft under submission., IEEE Computer Society, 7 January 2009
- David Greaves and Satnam Singh, Using C# Attributes to Describe Hardware Artefacts within Kiwi, in Specification and Design Languages Forum (FDL) 2008., IEEE Computer Society, September 2008
- Stephen Edwards, Satnam Singh, and Nalini Vasudevan, A Deterministic Multi-Way Rendezvous Library for Haskell, in IEEE International Parallel and Distributed Processing Symposium (IPDPS), IEEE Computer Society, April 2008
- David Greaves and Satnam Singh, Kiwi: Synthesis of FPGA Circuits from Parallel Programs, in IEEE Symposium on FPGAs for Custom Computing Machines (FCCM), IEEE Computer Society, April 2008
- David Greaves and Satnam Singh, Describing Hardware with Parallel Programs, in Designing Correct Circuits, Budapest, 2008., IEEE, March 2008
- Satnam Singh, Specifying Circuit Layout on FPGAs, in Reconfigurable Computing, Morgan Kaufmann Publishers, 2008
- Satnam Singh, Declarative Programming Techniques for Many-Core Architectures., in Workshop on Hardware Design and Functional Languages, 2007
- Tim Harris and Satnam Singh, Feedback-directed implicit parallelism, in Proceedings of ICFP 2007 (to appear), January 2007
- Satnam Singh, Hardware/Software Syntheiss and Verification using Esterel, in Communicating Process Architectures, 2007
- Satnam Singh, Digital CAD Tools as Transactional Memory Workloads, in Workshop on Transactional Memory Workloads, June 2006
- Anthony Discolo, Tim Harris, Simon Marlow, Simon Peyton-Jones, and Satnam Singh, Lock Free Data Structures using STMs in Haskell, in FLOPS '06: Proceedings of the Eighth International Symposium on Functional and Logic Programming, to appear, April 2006
- Gerogio Chrysanthakopoulos and Satnam Singh, An Asynchronous Messaging Library for C#, in Synchronization and Coordination in Object Orientated Lanugaes, October 2005
- Satnam Singh, Designing Reconfigurable Systems in Lava, in VLSI Design 2004, 2004
- Satnam Singh, A Demonstration of Co-Design and Co-Verification in a Synchronous Language. Design, in Design, Automation and Test in Europe, IEEE Computer Society, 2004
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 concurrent 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 Senior Member of the IEEE and ACM; a visiting professor at Imperial College; and a visiting lecturer at Chalmers in Gothenburg, Sweden.



