Workshop on Program Synthesis for Scientific Computing (PSW)
The workshop report is now available in this web page: https://www.anl.gov/cels/program-synthesis-for-scientific-computing-report
The US Department of Energy is planning an aggressive research program as part of its AI initiative, and as highlighted in the recently-released AI for Science report (see section 9), program synthesis and other high-level, AI-integrated programming methods will potentially be an important part of this program. The workshop will explore opportunities to develop program synthesis techniques that apply to scientific programming.
Topics of Interest
The topics of interest include (but not limited to):
-
Methods for injecting application requirements (e.g., natural-language descriptions, mathematical specifications, examples of desired behavior).
-
Methods for searching the space of potentially-suitable programs (e.g., reinforcement learning and other machine-learning techniques, counter-example-driven refinement, evolutionary methods, optimization methods).
-
Methods for verifying the correctness of potential programs or increasing the confidence of correctness in existing programs (including formal methods providing both absolute and statistical guarantees).
-
Methods reflecting the multi-objective nature of these problems, including performance, power efficiency, verifiability, and understandability.
Goals
This workshop aims to gather experts in program synthesis together with experts in scientific application development in order to generate concrete ideas for future research. A summary of these ideas will be used to generate a report that will help inform DOE’s efforts in this space.
Registration and Format
There is no fee to attend the workshop. However, space is limited and registration is required. This event is a virtual workshop.
Dates
The workshop dates are August 4-5, 2020.
Keynote Speaker
Justin Gottschlich, Intel
Bio: Justin Gottschlich is a principal scientist and the director and founder of the Machine Programming Research group at Intel Labs. More generally, Justin guides the research and engineering of machine programming (MP) across Intel, which is a new pioneering research area for the company. Justin has a deep desire to build bridges with thought leaders across industry and academia to identify disruptive research and push it forward as a community. Recently he has been working with Amazon, Brown, Georgia Tech, Google AI, Hebrew University, IBM Research, Microsoft Research, MIT, Penn, Stanford, Texas A&M, UC-Berkeley, and UCLA, to name a few. He co-founded and is the principal investigator of the joint Intel/NSF CAPA research center which focuses on simplifying the software programmability challenge for heterogeneous hardware. He also helped create the ACM SIGPLAN Machine Learning and Programming Languages workshop and currently serves as its steering committee chair. Justin also has the distinguished honor of serving on the advisory board of Solar-Lezama et al.’s 2020 NSF Expeditions “Understanding the World Through Code.”
Machine Programming: Challenges and Opportunities
Abstract: As defined by “The Three Pillars of Machine Programming”, machine programming (MP) is concerned with the automation of software development. The three pillars partition MP into the following conceptual components: (i) intention, (ii) invention, and (iii) adaptation, with data being a foundational element that is generally necessary for all pillars. While the goal of MP is complete software automation – something that is likely decades away – we believe there are many seminal research opportunities waiting to be explored today across the three pillars.
In this talk, we will cover a diverse range of topics that we believe are central to the advancement of MP, including: (i) machine programming using approximate and precise methods, (ii) extraction of multi-dimensional and evolving code semantics, (iii) human-intended and machine-intended programming languages, (iv) novel structural representations of code, (v) intentional programming and behaviors, (vi) traditional and continuous learning for adaptive software (and hardware), (vii) automation for software and hardware heterogeneity, (viii) ethics of machine programming, and (ix) the future of data, communication, and computation for MP. For each topic, we will provide an abbreviated assessment of both the strengths and weaknesses of current research advances, mostly as a vehicle to stimulate active discussion during the workshop.
Agenda
Day 1 (Aug/4)
Time (CDT) | Module | Presenter |
---|---|---|
11:00 - 11:15 | Welcome & Logistics | Hal/Ignacio |
11:15 - 12:00 | Keynote: Machine Programming: Challenges and Opportunities (video; slides) | Justin Gottschlich (Intel) |
12:00 - 1:30 | Breakouts 1 (parallel sessions) | |
Scientific Applications and Methods - Opportunities for Program Synthesis | ||
Proceed directly to your discussion group (group 1 or 2) | ||
Compiler Technology - Opportunities for Program Synthesis | ||
(12:00 - 12:30) | Three presentations, 10 minutes each (Chair: Johannes Doerfert): | |
Modernizing Compiler Technology using Machine Learning | Charith Mendis | |
Challenges and Opportunities for AI-Driven, Directive-based Heterogeneous Computing | Seyong Lee | |
Automatic Synthesis of Compiler Transformations | Martin Kong | |
Proceed to your discussion group (group 3 or 4) | ||
Program Synthesis using Data-Driven Heuristics (e.g., Machine Learning) | ||
(12:00 - 12:30) | Three presentations, 10 minutes each (Chair: Hal Finkel): | |
BluePencil: Automating Repetitive Code Edits with Modeless Synthesis (slides) | Arjun Radhakrishna | |
Learning fitness functions to synthesize programs | Abdullah Muzahid | |
Program Synthesis using Deduction-Guided Reinforcement Learning | Işil Dillig | |
Proceed to your discussion group (group 5 or 6) | ||
Program Synthesis using Enumerative/Formal Methods (e.g., CEGIS) | ||
(12:00 - 12:30) | Three presentations, 10 minutes each (Chair: Ignacio Laguna): | |
Syntax-guided synthesis (slides) | Rajeev Alur | |
Best-Effort Program Synthesis (slides) | Hila Peleg | |
Synthesis of Safe Pointer-Manipulating Programs (slides) | Nadia Polikarpova | |
Proceed to your discussion group (group 7 or 8) | ||
1:30 - 2:00 | Break | |
2:00 - 2:15 | Readouts (from the applications sessions, groups 1 and 2, only) | |
2:15 - 4:00 | Breakouts 2 (parallel sessions - all interdisciplinary) | |
Pick any of the three sessions, and then proceed to your discussion group | ||
Session 1 | ||
(2:15 - 2:45) | Three presentations, 10 minutes each (Chair: Hal Finkel): | |
Learning maths from examples with deep language model | Amaury Hayat / François Charton | |
Algorithm Synthesis for Scientific Applications | Markus Eisenbach | |
Compiler 2.0: Using Machine Learning to Modernize Compiler Technology | Saman Amarasinghe | |
Proceed to your discussion group (groups 9-16) | ||
Session 2 | ||
(2:15 - 2:45) | Three presentations, 10 minutes each (Chair: Ignacio Laguna): | |
Using Code Synthesis to Revitalize Legacy Code in Scientific Applications | Vivek Sarkar | |
Using Synthesis to Simplify Parallel Code Development (slides) | Alex Aiken | |
Learning + Search: The Right Way to Build an Optimizing Compiler | Jonathan Ragan-Kelley | |
Proceed to your discussion group (groups 9-16) | ||
Session 3 | ||
(2:15 - 2:45) | Three presentations, 10 minutes each (Chair: Johannes Doerfert): | |
Evolving machine code (slides) | Kamil Rocki | |
Improving the Scalability and Practicality of Syntax-Guided Synthesis | Xiaokang Qiu | |
Performance Exploration Through Optimistic Static Program Annotations | Johannes Doerfert | |
Proceed to your discussion group (groups 9-16) | ||
4:00 | Adjourn |
Day 2 (Aug/5)
Time (CDT) | Module | Presenter |
---|---|---|
11:00 - 11:15 | Organizers’ Feedback and Logistics | Hal/Ignacio |
11:15 - 12:00 | Readouts (from interdisciplinary sessions) | |
12:00 - 1:30 | Breakouts 3 (parallel sessions) | |
Scientific Applications and Methods - Opportunities for Program Synthesis | ||
Proceed directly to your discussion group (group 17 or 18) | ||
Compiler Technology - Opportunities for Program Synthesis | ||
(12:00 - 12:40) | Four presentations, 10 minutes each (Chair: Johannes Doerfert): | |
Reversible Computation in Optimistic Parallel Discrete Event Simulation (slides) | Markus Schordan | |
Domain-Specific Virtual Processors as Portable Programming and Execution Model for Scientific Computing (slides) | Dmitry Liakh | |
Code Analysis and Optimization using Loop Hierarchies (slides) | Michael Kruse | |
Loop Transformation Frameworks for Sparse Codes and Program Synthesis Opportunities | Michelle M Strout (slides) | |
Proceed to your discussion group (group 19 or 20) | ||
Program Synthesis using Data-Driven Heuristics (e.g., Machine Learning) | ||
(12:00 - 12:40) | Four presentations, 10 minutes each (Chair: Hal Finkel): | |
Statistical Program Synthesis | Swarat Chaudhuri | |
Learning Logic Programs from Data: From Practice to Theory and Back | Mayur Naik | |
Symbolic AD with conditionals for error and instability analysis (slides) | Ganesh L Gopalakrishnan | |
Machine-learning-based automatic performance tuning (slides) | Prasanna Balaprakash | |
Proceed to your discussion group (group 21 or 22) | ||
Program Synthesis using Enumerative/Formal Methods (e.g., CEGIS) | ||
(12:00 - 12:40) | Four presentations, 10 minutes each (Chair: Ignacio Laguna): | |
Live Functional Programming with Typed Holes (slides) | Cyrus Omar | |
Synthesis via Tactics (slides) | George Stelle | |
Using Synthesis for Verification of Configuration Files | Ruzica Piskac | |
Synthesis and Learnability of Relational Properties | Sarfraz Khurshid | |
Proceed to your discussion group (group 23 or 24) | ||
1:30 - 2:00 | Break | |
2:00 - 2:45 | Readouts | |
2:45 - 3:00 | Closing Remarks |
Contact
Please address workshop questions to Hal Finkel (hfinkel@anl.gov) and/or Ignacio Laguna (ilaguna@llnl.gov). During the event, please also cc India Gordon (igordon@anl.gov).