Faces of HPC: Fiona Reid
Fiona works at EPCC at the University of Edinburgh (UK). In addition to teaching MSc courses, she is works on projects such as the Intel Parallel Computing Centre optimizing the C2PK code.
Fiona graduated from the University of Edinburgh with a degree in geophysics, and completed her PhD in theoretical global seismology from Oxford. After a post-doc at Heriot-Watt in Reservoir geophysics, Fiona turned to HPC. She is currently working at EPCC on the IPCC project, optimizing the C2PK code for computational chemistry.
Tell us a bit about yourself
I was born in Edinburgh, and I’ve lived here most my life. I came to Edinburgh University to do a degree in maths, but that mutated quickly into geophysics - I realised that pure maths at University was much more theoretical and not so applied or fun compared to the maths that I enjoyed at school. I took the geophysics course in second year, which I really enjoyed as it gave me a chance to apply maths to real world situations and that’s how I ended up graduating with a degree in Geophysics.
After that I moved south to Oxford for four years and did a PhD – technically a DPhil – in global seismology from Oxford. Then I moved back up north to do a post-doc in reservoir geophysics at Heriot-Watt University. At one point, I was only getting six-monthly contract renewals, and I knew that I had to decide to either try to get my own research grants, or to do something a bit different. I opted for something a bit different.
So I applied for a job at EPCC because everything I’d done in my degrees had involved writing computer code. I was always doing research where the code didn’t exist and I had to write my own code to do the analysis I wanted to do with the seismograms. I was really quite surprised that I got offered it because I knew nothing about High Performance Computing at the time. Obviously I knew a fair bit about research and coding, but my HPC knowledge was pretty much googling what a supercomputer was. I told them at the interview that I was happy to learn everything, and I’ve worked here now for 11 years. While I’ve worked at EPCC I’ve done all kinds of things in terms of different codes, everything from geophysics-related codes to cancer genetics codes, to novel programming languages. It’s fun, and it’s very varied.
Outside of work, I spend most of my free time doing rock-climbing, hill-walking, skiing, snowboarding, chucking myself down hills on mountain bikes, basically anything that doesn’t involve sitting still at a desk.
What is your current job? Describe what you’re doing in HPC
At the moment I work mostly on the Intel Parallel Computing Centre (IPCC) project. I’m working on a computational chemistry code called C2PK. It’s about 7% of the usage on ARCHER [the UK national HPC facility], so it’s fairly important in terms of the number of science users, and what I’m trying to do is make it run faster on Intel’s Xeon Phi co-processor cards. It’s difficult to get a code like CP2K to go a huge amount faster since it’s already been optimised a lot, so really big gains are unlikely. So far, we can see it potentially going maybe 2 or 3% faster. I’m in the process of starting to put those changes in. It’s about a million lines of Fortran codes, so it’s pretty complicated. Even after over 2 years of working with the code I feel like I’m just scratching the surface but my understanding is always increasing and I’m always learning new things, which is great.
I also do a small amount of teaching on the MSc. I teach on the Parallel Programming Languages course, mostly Fortran 2008, and also the Shared Memory course, teaching people how to program in OpenMP. This was the first year in a long time when I didn’t have an MSc student to supervise, so I’ve been working on my main project over the summer.
Within the IPCC project, we also do a bit of training. We’ve run a couple of courses this year training people how to use the Intel Xeon Phi cards. One was in Edinburgh in April, in collaboration with the University of Cambridge, and another was in June this year in Southampton.
How did you become interested in HPC?
I’d always done lots of coding with my research because I needed to write new code in order to find the solutions to the problems I was trying to solve. I saw a job advertised at EPCC and it said you needed to know about research, about HPC, and either C or Fortran or C++. I probably had more of the soft skills and the research background than knowledge of the HPC side of things, but the advert suggested that not having the HPC knowledge wouldn’t prevent you from applying. Back in 2003/4 unless you worked in a supercomputing centre already, you wouldn’t know much about supercomputers. I figured I could probably learn the HPC stuff.
So I ended up working here because I saw a job that looked interesting, and I wanted a chance to do something a bit different: to be able to play with other people’s codes to make them go faster, and learn about what I could do to help a scientist make their code go quicker. I get to combine the skills I already had with new knowledge that I’ve learned since starting work at EPCC. I also get to learn about lots of different scientific areas, which is really interesting.
We want to celebrate the diversity of HPC, in particular to promote equality against the nine protected characteristics in the UK Equality Act. Do you feel an affiliation with this matter, and if so, how has this impacted your job in the HPC community?
EPCC, unlike a lot of parts of the physical sciences, has a fair number of female staff here, which is nice. It’s not the case that the only female member of staff is somebody that’s doing all the admin! There are a bunch of fairly techy women here, so you weren’t unusual in that sense, and I really quite enjoy that aspect of working here.
Pretty much everywhere that I’d worked before - in geology and geophysics - it’s a bit different because, certainly at PhD level, you tend to have a much more even split of men and women. But once you go on to postdocs, you tend to find that you are the only woman in the research group, and that was the case when I was at Heriot-Watt – there was me, and 12 guys.
I’ve done science subjects the whole way through school, and quite often I’ve been the only girl in a physics class, for example. But it’s never really bothered me. Science and maths were the things I was good at and the things that I found fun. So the fact that I ended up in a class with lots of guys was just like, whatever!
In terms of EPCC, the main thing I’d identify with is that there’s a fair number of women here and it’s quite nice not being the only one all the time – although that said, I don’t mind if I am. I’m going to a conference tomorrow where one of my colleagues is chairing some of the sessions and I suspect me and her may be the only women in the particular session. It’s kind of sad but you get used to that being a fact of life.
Is there something about you that’s given you a unique or creative approach to what you do?
I’m relatively unusual at EPCC because there aren’t that many people who come from a geophysics background. I think one of the other project managers, has a geophysics degree. I haven’t really used the geophysics stuff a massive amount here, though. That might be one thing that makes me a little bit more unusual.
Where there any challenges when you first entered the field?
I had to learn a lot of stuff – I had absolutely no background in HPC at all, aside from some coding. In my PhD and post-doc, we had situations where we couldn’t process all the data in one go, so we had to read data in small chunks at a time, which is similar to what you might do in supercomputing where you have to split a problem up.
The main challenge was learning how you would program parallel computers. I’d say these days I’m probably still not as confident talking about aspects of the architecture as some of my colleagues who come from that background. I learned the new material mostly by attending quite a lot of the MSc lectures. I also did a bit of self-learning.
Within a year I was teaching some of the MSc modules, and it’s only really when you teach something that you realise how much of it you do or don’t understand. I thought that was pretty cool that I’d gone within a year or so of knowing absolutely nothing about the subject to actually teaching it.
Initially it was a pretty steep learning curve. I guess I gradually started to do more interesting work as well - you have to learn a certain amount before you can start working on a real project and trying to parallelise a code, so over time I started to do slightly more technical and more detailed projects. I progressed from quite a bit of benchmarking-type stuff to being able to parallelise a code from scratch, or being able to take a code and optimise it, or actually getting right into the nitty-gritty of bug-fixing something.
You’re always learning here, it never really stops because the technology moves on pretty fast, the languages change, the hardware changes. I really quite like these aspects because you can’t just sit there and say I’ve learned everything. You have to keep learning new stuff all the time.
So it was a big, big learning curve, but very satisfying going from knowing nothing about the subject area to then being able to teach it, and standing up and talking about what I did at conferences is pretty cool. It shows that you may not be the world expert on the subject but you now have a level of knowledge that means that you have something useful to say about it that other people actually want to hear about.
What’s the best thing about working in HPC?
For me, the variety of work– the fact that I get to work with lots of different types of codes, and different types of scientists. Having different things to work on keeps everything fresh and fun and interesting.
I also like the fact that I often get to work on something for 6 months or a year, so you really get a decent understanding of something. The variety in the different science areas has been quite interesting too - I’ve been able to work with a chemistry code, nuclear fusion code, cancer genetics code, ocean modelling code, and various programming model benchmark suites. I like the chance to explore different areas of the sciences. Sometimes it can be a wee bit annoying because you don’t get to fully understand some of the stuff you’re working on, but you can get to the point where you understand enough of these things to be able to interact and discuss the codes with the developers.
If there was one thing about HPC you could change, what would it be?
The supercomputers are just big rectangular boxes - make them look less boring! Either that or find some other way to promote HPC that isn’t “here’s a big lump of hardware.” It should be far more about what you can do with this technology, not “here’s a bunch of big sexy black boxes with flashing lights on,” which blokes seem to find really exciting, but I just find rather dull. What they can do is a lot more interesting than what the box looks like. I guess we paint them pretty colours now, which makes it marginally better, but it‘s still just a big box of hardware.
What’s next for you in your career?
More of the same please! I enjoy what I’m doing and it’s interesting and varied work.
Fiona was interviewed by Vivian Uhlir in September 2015.