Program

09:00-10:00
Keshav Pingali, UT Austin: Model-based Control of Approximate Programs
Approximate computing trades off accuracy of results for resources such as energy, computing time, and memory usage. There is a large and rapidly growing literature on approximate computing that has focused mostly on showing the benefits of approximate computing or on programming constructs for verifying that approximation is confined to certain parts of the program such as computations that do not affect control-flow. However, we know relatively little about how to control approximation in a disciplined way. In this talk, we address the problem of proactive control of approximation in non-streaming programs that have a set of "knobs" that can be dialed up or down to control the level of approximation of different components in the program. Our approach uses machine learning techniques to learn cost and error models for the program, and uses these models to choose, for a desired level of approximation, knob settings that minimize running time or energy consumption. Experimental results with several complex benchmarks from different problem domains show that this is a promising approach for proactive control of approximate programs. This is joint work with Xin Sui, Andrew Lenharth, and Don Fussell at UT Austin.
10:00-10:40 Break
10:40-11:40
Shoaib Kamil, Adobe: New Techniques for Maintainable High-Performance Productive Programming
With the end of clock speed scaling, the only path forward for increasing performance requires careful construction of efficient, parallel code. At the same time, the proliferation of accelerators, hierarchical architectures, GPUs, and mobile devices has led to a multiplicative effect on the amount of time required for programmers to build efficient, high performance code. Additionally, programming these disparate memory models leads to poor maintainability, since most programming languages conflate optimizations and high-level algorithmic intent. While computers have increased performance in the previous decades, programmers must still use relatively primitive tools to program. This talk presents a way forward using domain-specific embedded languages and compilers, program synthesis, and other automated techniques that harness compute power to make it easier for programmers to productively build cross-platform, efficient code across the wide spectrum of devices and accelerators used today and in the future.
11:45-13:15 Lunch Break
14:00-15:00
Sebastian Pop, Samsung Austin R&D Center: Optimizing the software stack of a cosmic proportions cluster of multi-core machines
With more than a billion devices, Android is the largest heterogeneous multi-node multi-core machine built in a sustainable, very informal, and ad-hoc way in the past few years. Its size in number of cores and computational power surpasses by far all the super-computers tracked on top500.org. The software running on this heterogeneous machine of cosmic proportions is composed of open-source libraries mostly written in C and C++. It originates from a common source base, the Android Open Source Project (AOSP) that may be customized, updated, and deprecated with time. I will present the open source tools that we use in the compiler group at SARC (Samsung Austin R&D Center) to analyze the performance of AOSP, how to detect opportunities to improve performance, our current contributions to AOSP, and I will finish by showing how to prioritize the performance work and how to measure the overall impact of a code optimization in terms of energy consumption and improvements to the end-user experience.
15:00-15:30 Break
15:30-16:30
Victor Lomuller, Codeplay: SYCL: From compilation to execution and beyond