skip to content

Department of Computer Science and Technology

I started blogging in October 2015 with the aim of publicising my group’s research a little more, having a space to write about topics and work that weren’t going to be published, and delving into our research results in more detail than possible in a page-constrained article.  A year on, I wanted to look back and see how things had gone in my first year as a lecturer, but the events of this October overtook me.  Now, at the end of the calendar year when everything is calmer, it seems like a good opportunity to summarise the last twelve months and point to blog posts written and events that I didn’t find time to talk about.  Given the season I’ll try not to make it read like a Christmas round-robin letter!

January saw the publication of possibly the last paper for a while from my collaboration with Philip Watts and Anouk Van Laer from UCL on photonic interconnects. We’ve been working together for several years and written a number of papers in this area, trying to bring simulation of real workloads to identify and solve challenges in adoption of silicon photonics within CMPs.  Anouk spent one summer of her PhD in Cambridge with my group and has now successfully defended her thesis and moved on.  I’d jump at the chance of collaborating again with either of them in the future.

In March we published an analysis of the speedups available in loops parallelised by HELIX, using transactional memory to speculate across transient loop-carried dependences.  There are two key takeaways from this research.  First, improving static dependence analysis so that it recognises true cross-iteration dependences and nothing more (i.e. no false positives) does not significantly improve performance.  Yet there are considerable speedups available if we only respect true dynamic dependences.  This implies that many dependences are only transient in nature and that we need to use some kind of (probably runtime) system to synchronise them only when necessary.

Second, when using a transactional memory system to achieve this, then unsurprisingly the overheads need to be extremely low to realise the performance potential.  In fact, our models of software transactional memory systems failed to show any speedups in a number of cases and it was a hardware transactional memory system that showed the best potential.

ICS came around in June and my group had two papers there, one on a new software queue called Lynx, and the other on a graph prefetcher.  I’ve blogged about each separately (Lynx, graphs), so won’t write more here.  Around the same time, Alistair, whose Part II project I was supervising, submitted his work on automatic parallelisation of function calls in LLVM. He got a very high mark for his excellent implementation of this tricky topic and then a first overall for his degree, which was fantastic.  His experiences with LLVM have encouraged him to shy away from further compiler work and take other types of course in Part III!

In July we held a workshop in the Computer Lab on scalable data processing.  We invited a number of people from Cambridge and around the UK to present their work in this area.  My student, Sam, talked about his graph prefetcher.  It was also great to catch up with my friend and old colleague, Christophe Dubach, who talked about his work on functional programming primitives for GPU code.

The rest of the summer went by in a blur of paper writing (our CGO submission on software prefetching was accepted so I’ll write about that when the conference comes round), grant proposals (accepted, but I’ll blog when it starts) and updating my lecture notes and slides for my part of the Computer Design course.  I also had to attend a two and a half day seminar on being a new lecturer in Cambridge.  This was mostly very useful, because we got a lot of information, anecdotes and advice from professors from across the university on lecturing, research, supervisions and all the other aspects of the job.  At the end of September my postdoc, Konstantina, left for a job at Intel which was great for her, although I was sorry to see her go.

October was a roller-coaster of emotions.  At the beginning, Konstantina presented our paper on software error detection at CASES.  My daughter was then born in the middle of the month, late but super quickly.  I won’t go into details here; you’ll have to ask me in person to find out more!  Her two brothers are great with her though.  Then, about ten days later, I got an email asking me to phone my student’s boyfriend, and a subsequent call that totally knocked me for six at the end of my paternity leave.  My PhD student had died in a car accident back home.  I wrote a tribute a couple of weeks later and we’re still adjusting to her absence.  I hope to publish her research somewhere next year in memory of her.

The last two months were once again busy as I lectured (which always seems to take up an inordinate amount of time when it should just be six hours over two weeks!), we had the ISCA deadline, and then interviewed potential new undergraduates at the start of December.  Applications were up again for Computer Science across the university, which was great in many respects but meant that the chances of getting onto our course were lower, so I feel for everyone who applied.  We interviewed solidly for three days at St John’s and one day at Peterhouse, making offers to some great candidates.

So that’s my 2016 in a nutshell.  It’s interesting, at least for me, to look back at it and remember what I’ve done.  Of course, there’s loads more things I’ve been doing that I don’t have space to write about here, if I want to keep this post to a manageable length.  Maybe there’s a case for writing retrospectives more often, to note down some of this stuff, much of it also interesting in its own right, such as workshops I’ve been to or the Wheeler Lecture (which did get a short post).  I’ll think more on this during 2017.