Unlike a bird, which can learn to fly better and better, existing programs are sort of dumb—the one millionth run of a program is typically not a bit better than the first-time run. One of the main reasons is the insufficient consideration of program inputs in current program optimizations. The limitation has resulted in a set of shortcomings that have prevented the current programming systems from meeting the new challenges imposed by the continuous increases in hardware parallelism and software complexity.

Input-centric program behavior analysis is a technique for intelligent programming systems. The key is the concentration on program input, a factor deciding program behavior but being insufficiently understood and exploited. Input-centric behavior analysis opens the door to evolvable computing, where, the optimizer learns program behavior patterns incrementally across production runs, and improves the program continuously. Just as a bird learns to fly better and better, in evolvable computing, a program may learn to run faster and faster.

This talk will focus on the influence of program inputs on program behaviors, the handling of input complexity, and the modeling of the connections between inputs and runtime behaviors through incremental statistical learning. The effectiveness of input-centric analysis is demonstrated in its applications in enhancing runtime optimizations in Java Virtual Machine, improving cost-efficiency in software speculation, and alleviating optimization obstacles for GPU (Graphic Processing Unit) programs.


Xipeng Shen has been an assistant professor at The College of William and Mary since 2006. He received his Ph.D. and Master degree in Computer Science from University of Rochester in 2006 and 2003 respectively. He received the M.S. degree in Pattern Recognition from Chinese Academy of Sciences in 2001, and the B.S. degree from The North China University of Technology. Xipeng Shen's main research lies in the area of Compiler Technology and Programming Systems, covering Optimizing Compilers, Parallel Computing, GPU Computing, Program Behavior Analysis, etc. He leads the Compilers and Adaptive Programming Systems research group at The College of William and Mary. The group have been focusing on integrating automatic learning, adaptation, and evolvement into different computing layers to form a whole-system synergy.