Highlight on DMP Alum Kelly A. Shaw

Originally Printed in Winter/Spring Newsletter 2010

Kelly A. Shaw is a newly promoted Associate Professor in the Math and Computer Science Department at the University of Richmond. She earned her Ph.D. from Stanford University in the area of computer architecture. Her current research interests are in exploring the boundaries among hardware, operating systems, and compilers in future chip multiprocessors. This work includes examining the memory system demands of data intensive commercial applications.

Q: How did you become interested in research in computer architecture? 

During my junior year of college, I took operating systems from Carla Ellis at Duke University.  I’m not exactly sure why, but I really liked this course.  It was probably a mix of the material, the professor, and a great project group con-sisting of two female friends.  I applied to the CRA-W Distributed Mentor Project (DMP), now the DREU program, and got matched with Margaret Martonosi at Princeton University.  Carla really encouraged me to make the most of this opportunity so I went off to Princeton that summer experience was a life-altering experience.  I didn’t know what it meant to do research prior to that summer so I had never considered a career in which I did research.  The project that Margaret and I worked on explored issues related to write buffer and cache write miss policies in uniprocessor machines.  As part of this work, we examined how compiler decisions could impact per-formance when combined with different write buffer and cache write policies.  I was hooked.  After that summer, I thought it would be really neat to research the interactions among architecture, compilers, and operating systems.   Not only did Margaret show me that research was fun, but she convinced me that I could be good at doing research.  She subsequently helped me to get into graduate school and helped me through graduate school including being on my dissertation committee.

Q: How did you focus on the topic of multiprocessors on a chip?

I started graduate school at Stanford University during a really exciting time for computer architecture.  Technology issues were forcing computer architects to switch their focus to constructing chip multiprocessors instead of uniprocessor chips.  The field was really wide open.  What were the big challenges going to be for designing these chips and for getting good performance out of these chips?  My dissertation work examined ways to reduce the frequency and latency of on-chip communication while also using all of the processing resources available on the chip.  One of the approaches I considered identified information in the application that could be passed to the hardware so that the hardware could make better decisions.

When I started at the University of Richmond, I was really intrigued with the possibilities of the software exposing information to the hardware and potentially the hardware exposing information to the software in order to enable use of various optimizations or to improve decision making.   Commercial workloads and data mining applications have enough parallelism to take advantage of the increasing number of processors on a chip, but they could be data intensive enough that memory usage could severely impact their performance on chip multiprocessors.  They seemed like the ideal set of applications to explore whether or not the exchange of information between hardware and software could help reduce the negative impact of memory demands.

Q: It sounds like one of the biggest research challenges in your field is to help applications effectively use chip multiprocessors. Specifically, how does your current work address it? 

Exactly.  In my approach, software potentially provides “extra” information that enables the hardware to adapt the application’s execution to current chip conditions.  When code is developed, there are a lot of unknowns about how the hardware will look.  It’s not clear how many processors will be available when the code executes because of constant increases in the number of available processors, the number of concurrently running programs on the chip, and potentially failed processors on the chip.  It’s not clear how far apart those processors might be from one another or whether the processors will have different capabilities.  It’s also not clear what hardware optimizations will be available for an application to use.  In this situation, it’s important for the software to provide enough information to the hardware so that the runtime system can dynamically determine how to execute an application based on the available resources.

One piece of work I’ve been exploring with my students is whether software can do a better job organizing dynamically allocated data so that it is easier for hardware to apply optimizations to large sets of contiguous data.  In our analysis of data mining workloads, we discovered that no single memory optimization would improve performance of most of the applications we looked at.  Hardware will therefore need to dynamically determine which of a set of optimizations should be used on each application.  Additionally, we discovered that data allocated at different code locations frequently demonstrated different usage characteristics.  If we can insure that data allocated at the same code locations are placed in contiguous memory locations, it will make it easier for the hardware to selectively apply different memory optimizations to large swathes of data.

Q: Are you engaged in any collaborations outside of your institution? 

Yes, I am working with Margaret Martonosi and her student Wenhao Jia.  The goal of the project is to include information in an executable so that a runtime system can then use that information to tailor the execution of the application on a chip given the current state of available resources on the chip.  This includes making it possible for the application to recover from dynamic failures (e.g. temporary processor failure).  There are lots of opportunities in this work to optimize performance and respond to hardware failures.  As chip multiprocessors have more and more processors, these types of approaches to software and runtime systems will be essential to making it possible for software developers to write programs that effectively utilize these chips.

Q: What are the challenges  of  doing research at a primarily undergraduate, liberal arts university? 

Juggling the amount of time I spend on teaching versus research has been a constant struggle for me.  I really enjoy teaching and interacting with students, but I also need to do research to be happy.  I’ve learned that I need to schedule chunks of time for research and then protect them against intrusion.  Sometimes it means that I work more hours than I want in order to get everything done, so I have to be careful about not going overboard.

One of the biggest challenges for doing research at the University of Richmond is finding students to work on research early in their undergraduate career.  Because my university doesn’t have an engineering school, the pool of computer science majors is small.  My research requires students to have a basic knowledge of computer architec-ture and strong software-development skills in order to build the code infrastructure needed for the research.  Unfortunately, our students don’t necessarily have these skills until the end of their sophomore year and they may have already been working on another faculty member’s research by that point in time.  I’ve been very fortunate to have identified several students who have worked with me for extended periods of time.

The hardest part of my career is staying connected with the research community and current research.  Because I don’t attend as many workshops and conferences as my colleagues at research universities, keeping up with emerging projects and research results can be challenging.  I also have limited opportunities to bounce research ideas off of my colleagues as my department is quite small and there is limited overlap between my work and the other faculty.  When I first started as a professor, I found myself feeling pretty isolated from research; I tend to get more excited and motivated about research when I’m exposed to new research ideas and getting to discuss research concepts with others.  Since my environment wasn’t going to change, I had to discover a way around this problem.  I started thinking of my paper and grant reviewing opportunities as a way to keep abreast of new research.  While serving on panels and program committees, I’ve not only learned about current research, but I’ve also learned how other people critique research.  Additionally, they were great networking opportunities.  Finally, my research collaboration with Margaret Martonosi keeps me motivated.  Every time we talk, I come away completely energized about research.

Q: What do you enjoy most about your teaching and research career at the University of Richmond? 

One of the biggest rewards is getting to work collaboratively with the students on research, including infrastructure building.  It’s goofy, but I love writing code.  Given the small number of students available to work on my projects, it is imperative for me to do much of the software development with my students.   Not only do I get to do something I really enjoy, but I also get to help my students improve their skills and become better software developers.  When we look at results, we are exploring them together.  When the students are more junior, I’m mostly leading the way in understanding the results, explaining the process of research.  However, as they get more senior, they are throwing out observations and possible conclusions or implications as much as I am.  That just thrills me. I know that they’re able to do this because of all the hard work we’ve both put in and I know they’ll benefit from these skills in the future.

I really enjoy interacting with and being a mentor for students.  I have a lot of fun getting to know students in my classes. Because I frequently teach students multiple times throughout their undergraduate career, I get to see them grow as individuals and gain more confidence in their abilities. I look forward to them stopping by just to say “Hi” or to tell me about some accomplishment they’ve achieved.  With my research students, it’s even more exciting to see how well they’ve picked up the skills you’ve taught them. It just feels great when you’re able to help a student achieve some goal or discover some new interest.  I’m amazingly proud of my students when they get accepted to graduate school or get a paper accepted.  I’m just as excited as they are about their success.

Q: You were very recently awarded tenure at Richmond. Although there hasn’t been much time for the implications of that to sink in, what new challenges do you hope to pursue now that you’ve passed that milestone? 

Change the world?  I know that sounds silly, but in reality I feel some internal pressure to figure out how I’m going to make a difference.  There are so many possibilities.  I think mentoring at the undergraduate level can make a huge difference in students’ lives and can increase their likelihood of pursuing research careers.  Getting to know graduate students helps undergraduates envision themselves in graduate school.  It’s part of the reason I’ve strongly encouraged my students to take advantage of the various workshops and summer internships offered by CDC and CRA-W.  It makes me wonder if I might be able to create a collaboration where I mentor an undergraduate student who works on a small portion of a bigger project being conducted at a research university.  I’m also wondering whether I should try to write an article geared towards undergraduates which describes the different components of doing research and what good practices are for doing research; it would be at a lower or more detailed level than, for example, presentations on things to do to be a good graduate student.  Finally, my colleague Barry Lawson and I have talked about creating a summer outreach program that introduces disadvantaged students in Richmond to computer programming; we didn’t want to do this before we were both tenured, but now it might be possible.

Q: How have your interactions with CRA-W affected your career? 

To be honest, the CRA-W DMP internship I did with Margaret Martonosi at Princeton University completely changed my life. Because I thought the program was so wonderful for me, I served as a mentor for a student a few years ago. While in graduate school, I attended one of CRA-W’s workshops for individuals who were about to graduate and were looking for academic positions.  Not only was the information really helpful, but I made a number of friends who I’ve stayed in contact with since then.  I frequently run into these individuals at the Grace Hopper Celebration of Women in Computing conference. I was also really excited to be part of the committee that helped organize the CRA-W/CDC Computer Architecture Summer School held at Princeton University in 2006.  I met women at later conferences who told me how wonderful and helpful they thought the summer school was.  Since then, I’ve had several of my undergraduate students attend similar summer schools and come back enthusiastic about research as a career.

Q: Have you been involved in other activities that support women in computing? 

Actually, several of us who met at various events spon-sored by CRA-W and who are currently (or until very, very recently in my case) pre-tenure women faculty on the east coast have gotten together a few times to exchange stories, give advice, and basically support one another. I’m also really proud of a recurring activity in my area of computer architecture. When I was in graduate school, a number of female graduate students (including me) informally started organizing informal dinners for the women (junior students to well-established researchers) attending the big computer architecture conferences.  It’s a great opportunity for us to meet one an other and for younger students to establish connections with other female researchers.

Q: What keeps you sane outside of work? 

When I decided to become a professor, I decided that I did not want to forgo my life for the period of time before tenure.  I also believe it’s really important to be a role model for my students, showing them by example that it is possible to balance a career and a life outside of work.  I have therefore tried to spend time on areas of my life that I believe are important – my health, family and friends, and giving back to my community. If I’m healthy and rested, I tend to work more efficiently and more creatively.  This requires me to get a plentiful amount of sleep every night and to eat healthfully.  Since I moved to Richmond,  I have done a lot more cooking from scratch, including making my own bread.  Additionally, I tend to be a very physically active person.  In recent years, I’ve picked up new activities (horseback riding, swimming, dancing) to complement the time I spend doing yoga and strength training. For 3.5 years, I volunteered at the Chesterfield County Police Department, helping them produce a volunteer newsletter.  This department has over 200 volunteers scat-tered throughout their agency and each issue of the newsletter highlights volunteers in a given area.    I gained a lot from the experience.  In particular, I came to appreciate everything that the police department does to not only prevent crime but also to help citizens.

Q:  And who is this Dr. Bob I’ve heard so much about? 

After my first year as a professor, I adopted a Golden Retriever puppy named Dr. Bob. Most of my neighbors know us (well, they know her
name and recognize me) because we walk extensively in the neighborhoods surrounding our home. She also loves going hiking and playing fetch, so we have a lot of fun when the weather permits us to do those things. I can’t imagine my life without her. She makes me take breaks from work and reminds me of the simple pleasures in life. She constantly makes me laugh.

Q: Do you have any advice for young women who might wish to follow your career path? 

I guess I have two pieces of advice.  First, find mentors and friends that will help and support you.  I have been extraordinarily lucky to have fabulous people supporting and encouraging me in my career.  I would not have become a tenured professor without their help.  You need to have people who will tell you whether or not what you’re experiencing is reasonable and give you advice on how they’ve dealt with various challenges. Second, remember that this is your life.  You can put off certain things in life for brief periods of time, but you don’t want to put them off forever.  You won’t be happy.  If something is important to you, make time for it.  Take a day off from work every week when you’re not in a crunch period. You need a break and you’ll be more productive if you do.  If volunteering or exercise is important to you, find a way to slip it in.  Don’t neglect yourself indefinitely.