|| Markus Püschel
Title - Program Generation for Performance
It has become extraordinarily difficult to write software that performs close to optimally on complex modern microarchitectures. Particularly plagued are domains that require complex mathematical computations such as multimedia processing, communication, control, graphics, and machine learning. In these domains, performance-critical components are usually written in C (with possible extensions) and often even in assembly, carefully "tuned" to the platform's architecture and microarchitecture. The result is usually long, rather unreadable code that needs to be re-written or re-tuned with every platform upgrade. On the other hand, the performance penalty for relying on straightforward, non-tuned, "more elegant" implementations can be often a factor of 10, 100, or even more.
The overall problem is one of productivity, maintainability, and quality (namely performance), i.e., software engineering. However, even though a large set of sophisticated software engineering theory and tools exist, it appears that to date this community has not focused much on mathematical computations nor performance in the detailed, close-to-optimal sense above. The reason for the latter may be that performance, unlike various aspects of correctness, is not syntactic in nature (and in reality is often even unpredictable and, well, messy).
The aim of this talk is to draw attention to the performance/productivity problem for mathematical applications and to make the case for a more interdisciplinary attack. As a set of thoughts in this direction we offer some of the lessons we have learned in the last decade in our own research on Spiral (www.spiral.net), a program generation framework for numerical kernels. Key techniques used in Spiral include staged declarative domain-specific languages to express algorithm knowledge and algorithm transformations, the use of platform-cognizant rewriting systems for parallelism and locality optimizations, and the use of search and machine learning techniques to navigate possible spaces of choices. Experimental results show that the code generated by Spiral competes with, and sometimes outperforms, the best available human-written code. Spiral has been used to generate part of Intel's commercial libraries IPP and MKL.
Markus Püschel is a Professor and currently Department Head of Computer Science at ETH Zurich, Switzerland. Before, he was a Professor of Electrical and Computer Engineering at Carnegie Mellon University, where he still has an adjunct status. He received his Diploma (M.Sc.) in Mathematics and his Doctorate (Ph.D.) in Computer Science, in 1995 and 1998, respectively, both from the University of Karlsruhe, Germany. Together with his collaborators, he co-founded Spiralgen in 2009. One of his main research interests is the automatic generation of highest performance code for mathematical functionality using an approach and ideas developed in Spiral (www.spiral.net).
For more information please visit http://people.inf.ethz.ch/markusp/.
|| Wolfram Schulte
Title - Changing Microsoft's Build: Revolution or Evolution
Tens of thousands of Microsoft engineers build and test hundreds of
software products several times a day. It is essential that this
continuous integration scales, guarantees short feedback cycles, and
functions reliably with minimal human intervention. During the past
three years TSE's charter has been to shorten this cycle time. We went
after this goal in two ways: Evolution via CloudBuild and Revolution via
CloudBuild is a build service infrastructure, now being used by all
major product groups in Microsoft, like Azure, Bing, Office, SQL except
for Windows. CloudBuild addresses all aspects of a continuous
integration workflow, like builds, test and code analysis, but also
drops, package and symbol creation and storage. CloudBuild supports
multiple build languages as long as they fulfill a coarse grained IO
based contract. CloudBuild uses content based caching to run
build-related tasks only when needed. Lastly, it builds on many machines
in parallel. The speed ups of build and testing range from 1.2x to 10x.
CloudBuild aims to rapidly onboard teams and hence has to support
non-deterministic build tools and specification languages that
under-declare dependencies. CloudBuild, being a reliable build service
in the presence of unreliable components, currently achieves service
availability better than 99%.
Windows went a different path. Their past build exhaust was so massive
that building Windows in the cloud and bringing the build results back
for testing on corp.-net. was considered infeasible. So they decided to
move to a new build language, codename Concord. By construction, Concord
guarantees reliable builds, no over-build, and allows for efficient
distribution. Adopting Concord has led to immense performance
improvements, we have seen up to 100X speedup for Windows builds. But
the path has been long and rocky, since it not only requires a
substantial rewrite of existing build logic, but also all related
developer and build lab processes have to change. Whether evolution or
revolution is the right path forward -- the verdict is still out.
Wolfram Schulte is a director of engineering in Microsoft's Developer Division, Redmond, USA, where he founded in 2012 the Tools for Software Engineers (TSE) team. TSE's mission is to improve Microsoft's engineering velocity, more specifically minimize the cycle time of the inner loop from code review, via build, code-analysis and test, to deployment. TSE does so by building developer services using Cloud technologies. TSE tools and services are meanwhile used by more than thirty-five thousand developers within Microsoft. Before Wolfram ventured into product groups, Wolfram lead the Research in Software Engineering (RiSE) group, at Microsoft Research, Redmond, USA. While at RiSE, Wolfram co-authored papers and build prototypes for many tools that Microsoft ships, including Linq, CodeContracts, Task Parallel Library, IntelliTest, and SpecExplorer. Wolfram also co-developed the experimental program verifiers Spec# and VCC. Wolfram was awarded the 2016 Harlan D. Mills award for "... advances in software verification". Before joining MSR in 1999, Wolfram worked at the University of Ulm (1993-1999, habilitation), at sd&m, a German software company (1992-1993), and at the Technical University Berlin(1987-1992, PhD).
|| David S. Rosenblum
Title - The Power of Probabilistic Thinking
Traditionally, software engineering has dealt in absolutes. For instance, we talk about a system being "correct" or "incorrect", with the shades of grey in between occasionally acknowledged but rarely dealt with explicitly. And we typically employ logical, algebraic, relational and other representations and techniques that help us reason about software in such absolute terms. There of course have been notable exceptions to this, such as the use of statistical techniques in testing and debugging. But by and large, both researchers and practitioners have favored the relative comfort of an absolutist viewpoint in all aspects of development.
In this talk, I will argue the benefits of taking a more thoroughly probabilistic approach in software engineering. Software engineering is rife with stochastic phenomena, and the vast majority of software systems operate in an environment of uncertain, random behavior, which suits an explicit probabilistic characterization. Furthermore, this uncertainty is becoming ever more pronounced in new software systems and platforms, such as the Internet of Things and autonomous vehicles, with their frequent imprecise outputs and heavy reliance on machine learning. To illustrate more deeply some of the considerations involved in taking a probabilistic approach, I will talk about some recent research I have been doing in probabilistic verification.
David S. Rosenblum is Provost's Chair Professor of Computer Science at the National University of Singapore (NUS). He holds a Ph.D. from Stanford University and joined NUS in April 2011 after holding positions as Member of the Technical Staff at AT&T Bell Laboratories (Murray Hill); Associate Professor at the University of California, Irvine; Principal Architect and Chief Technology Officer of PreCache (a technology startup funded by Sony Music); and Professor of Software Systems at University College London. David's research interests span many problems in software engineering, distributed systems and ubiquitous computing, and his current research focuses on probabilistic verification, uncertainty in software testing, and infrastructure support for the Internet-of-Things. David is a Fellow of the Association for Computing Machinery (ACM) and the Institute of Electrical and Electronics Engineers (IEEE). He serves as Editor-in-Chief of the ACM Transactions on Software Engineering and Methodology (ACM TOSEM), and he was previously Chair of the ACM Special Interest Group in Software Engineering (ACM SIGSOFT). He has received two "test-of-time" awards for his research papers, including the ICSE 2002 Most Influential Paper Award for his ICSE 1992 paper on assertion checking, and the first ACM SIGSOFT Impact Paper Award in 2008 for his ESEC/FSE 1997 on Internet-scale event observation and notification (co-authored with Alexander L. Wolf). For more information please visit http://www.comp.nus.edu.sg/~david/.