workshop

Workshop on Program Synthesis for Scientific Computing (PSW)

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).