Photo info

Photo by williamchp@flickr.

Description: View of Marina Bay Singapore from The Singapore Flyer

The photo is copyrighted by its owner. Unauthorized use is prohibited.

Close
ASE 2016
September 3-7, 2016
Singapore

ASE 2016
 
Program
Presentation Instruction
Keynotes
Registration
Proceedings
 
Organization
Program Committee
Important Dates
Calls
Workshops
Tutorials
Doctoral Symposium
Venue
Travel
Accommodation
Previous Years
Publicity Materials
Banners
Sponsors
 
Sponsored by:
Supported by:
Held in:

Keynotes

 Markus Püschel

Title - Program Generation for Performance

Slides

Abstract

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.

Brief Biography

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

Abstract

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

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.

Brief Biography

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

Slides

Abstract

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.

Brief Biography

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




Hosted by School of Information Systems, Singapore Management University, Singapore.
Webmaster: Pavneet Singh and Ferdian Thung