Xipeng Shen PhD '06
Interview from 2019 Multicast Newsletter
Xipeng Shen is a professor in the Department of Computer Science at North Carolina State University. He is the recipient of many career and research awards and honors throughout his career. He is an ACM Distinguished Speaker and a senior member of IEEE, a University Faculty Scholar, and an IBM Canada CAS Faculty Research Fellow. He has served as a consultant for numerous IT companies.
Prior to joining NC State in 2014 as a Chancellor’s Faculty Excellence Program cluster hire in Data-Driven Science, Shen was the Adina Allen Term Distinguished Associate Professor in the Department of Computer Science at William & Mary. He received his PhD in computer science from the University of Rochester in 2006, a master’s in intelligent systems and pattern recognition from the Institute of Automation, Chinese Academy of Sciences in 2001, and a bachelor of industry automation from the North China University of Technology in 1998.
You graduated from the University of Rochester with a PhD in computer science. Why did you choose Rochester?
When I studied at the Chinese Academy of Sciences for my master’s degree, my research was on Speech Recognition and Speech Synthesis, a research direction mostly belonging to the field of computer science in American universities. As a result, when I was applying for PhD programs to pursue advanced studies in that direction, my targeted departments were mostly CS departments.
The initial motivation for me to choose the University of Rochester was its strength in AI and the good match of the research directions of Professor James Allen (in NLP) and my interest at that time. After I got into the program, I realized that my true interest was not in symbolic AI but statistical machine learning-based AI. I learned that there was some great potential for combining statistical machine learning with program behavior analysis, which led me to join Professor Chen Ding’s group after my PhD qualification exam.
As I was not a computer science major before joining Rochester, I lacked basic background knowledge in operating systems, compilers, databases, computer architecture, algorithms, computational theory, even discrete math. The first semester at Rochester was hence extremely challenging for me. But luckily, I caught up pretty quickly. At the end of the first semester, I managed to successfully pass all the courses with above average scores. In the third semester, I passed the PhD qualification exams with two “high pass” and one “pass.” In retrospect, I think that two factors helped me achieve significant progress in the short period of time. The first is the curriculum design in Rochester’s computer science. The curriculum has a nice tiered structure and good coverage. It consists of some core courses (e.g., OS, Compiler) that offer some basic CS knowledge, which helps to level the backgrounds of different students. It requires some advanced courses in all three key CS areas (Systems, AI, and Theory) and imposes the requirements for students to do well in all of them, which helps prepare the students with a breadth of knowledge that is extremely helpful for creative research. The second is the culture at Rochester of helping each other. The students in computer science are like a big family. When I had trouble understanding a lecture, I could easily find a classmate who was willing to spend a couple of hours to re-explain the lecture to me.
What do you remember fondly about Rochester’s Department of Computer Science?
Many things! One of them is the champagne bottles. I introduced that tradition to my own research group at North Carolina State University; I have now nine bottles on my shelf.
Which of your many research findings do you believe have been the most influential in your area?
Pioneering research on program optimizations on multicore and Graphic Processing Units. My work is among the first efforts for achieving systematic understanding of the implications brought to programming systems by multicore CPUs and many-core GPUs. The seminal work of my group on multicore data locality analysis lays the foundation for modeling and optimizing program memory performance on modern multicore processors with shared cache. My work has established a set of influential compiler solutions for overcoming GPU weaknesses on supporting irregular computations and dynamic parallelism, which offered the first solution for automatic portable data placement on GPU memory, and contributed a programming framework that yields the state-of-art performance for pipeline computations on GPU.
The second is on advancing optimizing compilers to high-level semantic-based program optimizations, a new approach to removing large-scoped redundant computations that have been elusive to both traditional compilers and domain experts. The approach has led to the development of an algorithm optimizer for a class of machine learning and data- intensive applications. By generalizing Triangle Inequality (TI) into a compiler optimization technique, it created TI- based strength reduction, a technique that speeds up a set of data mining and machine learning algorithms by orders of magnitude.
Over the years, you have advised a large number of students. What is your approach to research advising?
Advising each student in accordance with their personal strengths and natural ability, and I always try to put myself in the students’ shoes when advising them.
On your website, you have several pictures of extracurricular activities with students in your research group, such as ping-pong and bowling. What has been your favorite part in leading this group so far?
My hope was that those activities could leave the students with some fun memory of their graduate life. They also helped with the team building, which is important for collaborative research.
My favorite part in leading the group has been seeing the growth of the students.
What advice would you give to undergraduate and graduate students who are currently enrolled in the University of Rochester’s computer science programs?
Always stay ambitious, in both setting up the goals of your graduate study and in making your future career choice. It is important for materializing your potential and the value of your life. Meanwhile, don’t forget to enjoy every minute in this precious period of your life.