Date: February 27, 2020
Time: 2:30-3:30pm ET


Packet-processing code should be fast. But, it is hard to write fast code for programmable substrates such as high-speed switches, multicore SoC SmartNICs, FPGAS, middleboxes, and the end-host stack. Today, expert developers with deep familiarity with the underlying hardware handcraft such code. Making things worse, building optimizing compilers for these substrates requires significant development effort, which may not be available for these new, niche, and evolving substrates. We propose an alternative: to automatically generate fast packet-processing code using program synthesis. For the domain of packet processing, leveraging program synthesis can generate faster code than optimizing compiler at the cost of increased compile time. As a case study, we apply program synthesis to build a code generator, Chipmunk, for a simulator of the protocol-independent switch architecture (PISA). Chipmunk generates code for many programs that a previous code generator based on classical compiler optimizations rejects, and code generated by Chipmunk uses much fewer hardware resources. We can also outline future directions in applying program synthesis to code generation for packet processing.


Xiangyu Gao is a PhD student at the Department of Computer Science, New York University, advised by Anirudh Sivaraman from New York University and Srinivas Narayana from Rutgers University. His research interest is in computer networks and programming language, with a focus on program synthesis and Domain specific algorithm design with application in programmable switches. Prior to NYU, he received his Bachelor’s degree from Shanghai University of Finance and Economics in 2013.