TY - GEN
T1 - Autogenerating fast packet-processing code using program synthesis
AU - Gao, Xiangyu
AU - Kim, Taegyun
AU - Varma, Aatish Kishan
AU - Sivaraman, Anirudh
AU - Narayana, Srinivas
N1 - Publisher Copyright:
© 2019 ACM.
PY - 2019/11/13
Y1 - 2019/11/13
N2 - Packet-processing code should be fast. But, it is hard to write fast code for programmable substrates such as high-speed switches, multicore SoC SmarfNICs, FP-GAs, 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, using synthesis can generate faster code than an 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 also outline future directions in applying program synthesis to code generation for packet processing.
AB - Packet-processing code should be fast. But, it is hard to write fast code for programmable substrates such as high-speed switches, multicore SoC SmarfNICs, FP-GAs, 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, using synthesis can generate faster code than an 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 also outline future directions in applying program synthesis to code generation for packet processing.
UR - http://www.scopus.com/inward/record.url?scp=85077266237&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85077266237&partnerID=8YFLogxK
U2 - 10.1145/3365609.3365858
DO - 10.1145/3365609.3365858
M3 - Conference contribution
T3 - HotNets 2019 - Proceedings of the 18th ACM Workshop on Hot Topics in Networks
SP - 150
EP - 160
BT - HotNets 2019 - Proceedings of the 18th ACM Workshop on Hot Topics in Networks
PB - Association for Computing Machinery, Inc
T2 - 18th ACM Workshop on Hot Topics in Networks, HotNets 2019
Y2 - 14 November 2019 through 15 November 2019
ER -