The 2nd International Workshop on Machine Learning for Software Hardware Co-Design (MLSH’21)

As Machine Learning (ML) continues to permeate all areas of computing, software system designers and software stack developers are adopting ML solutions and designs to solve challenging problems presented in their areas; especially in areas like optimization and hardware design. ML is increasingly being used to solve a diverse set of problems such as the design of cost models, code optimization heuristics, efficient search space exploration, automatic optimization, and program synthesis. Designing accurate machine learning models, feature engineering, verification, and validation of obtained results and selecting and curating representative training data are all examples of challenging but important problems in this area that are actively being explored by a large community of researchers in industry and academia. This workshop provides a great venue for the international research community to share ideas and techniques to apply machine learning to system challenges with a focus on the software stack and hardware.

September 26, 11:00-16:00 (EDT)

Eun Jung (EJ) Park, Los Alamos National Laboratory
Riyadh Baghdadi, New York University and Massachusetts Institute of Technology
Joseph Manzano, Pacific Northwest National Laboratory



How to Parallelize Your Own Language Using OpenCilk Components

OpenCilk ( is a new open-source platform to support task-parallel programming in C/C++, aimed primarily at researchers and teachers of parallel computing. OpenCilk provides a full-featured implementation of Cilk, including a compiler based on the award-winning Tapir/LLVM and a streamlined runtime system based on Cheetah, as well as integrated tools, including the Cilksan race detector and the Cilkscale scalability analyzer. OpenCilk features a componentized design that makes it easy for compiler writers to add parallelism to their own languages, experiment with new runtime systems, and create custom dynamic-analysis tools for parallel productivity.

The first half of the tutorial overviews the OpenCilk project. It provides details about the OpenCilk architecture, specifically its componentized design that allows individual components to be repurposed by researchers and developers. The second half of the tutorial is a hands-on session. Participants use OpenCilk components to add parallelism to Kaleidoscope, a toy language that the LLVM project uses to introduce people to LLVM. They debug and analyze their addition using OpenCilk productivity tools.

September 27 (Monday), 15:00-19:00 (EDT)

Tao B. Schardl, Massachusetts Institute of Technology
I-Ting Angelina Lee, Washington University in St. Louis