Vojin Jovanovic
École Polytechnique Fédérale de Lausanne
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Vojin Jovanovic.
symposium on principles of programming languages | 2013
Tiark Rompf; Arvind K. Sujeeth; Nada Amin; Kevin J. Brown; Vojin Jovanovic; HyoukJoong Lee; Manohar Jonnalagedda; Kunle Olukotun
High level data structures are a cornerstone of modern programming and at the same time stand in the way of compiler optimizations. In order to reason about user- or library-defined data structures compilers need to be extensible. Common mechanisms to extend compilers fall into two categories. Frontend macros, staging or partial evaluation systems can be used to programmatically remove abstraction and specialize programs before they enter the compiler. Alternatively, some compilers allow extending the internal workings by adding new transformation passes at different points in the compile chain or adding new intermediate representation (IR) types. None of these mechanisms alone is sufficient to handle the challenges posed by high level data structures. This paper shows a novel way to combine them to yield benefits that are greater than the sum of the parts. Instead of using staging merely as a front end, we implement internal compiler passes using staging as well. These internal passes delegate back to program execution to construct the transformed IR. Staging is known to simplify program generation, and in the same way it can simplify program transformation. Defining a transformation as a staged IR interpreter is simpler than implementing a low-level IR to IR transformer. With custom IR nodes, many optimizations that are expressed as rewritings from IR nodes to staged program fragments can be combined into a single pass, mitigating phase ordering problems. Speculative rewriting can preserve optimistic assumptions around loops. We demonstrate several powerful program optimizations using this architecture that are particularly geared towards data structures: a novel loop fusion and deforestation algorithm, array of struct to struct of array conversion, object flattening and code generation for heterogeneous parallel devices. We validate our approach using several non trivial case studies that exhibit order of magnitude speedups in experiments.
european conference on object oriented programming | 2013
Arvind K. Sujeeth; Tiark Rompf; Kevin J. Brown; HyoukJoong Lee; Hassan Chafi; Victoria Popic; Michael Wu; Aleksandar Prokopec; Vojin Jovanovic; Kunle Olukotun
Programmers who need high performance currently rely on low-level, architecture-specific programming models (e.g. OpenMP for CMPs, CUDA for GPUs, MPI for clusters). Performance optimization with these frameworks usually requires expertise in the specific programming model and a deep understanding of the target architecture. Domain-specific languages (DSLs) are a promising alternative, allowing compilers to map problem-specific abstractions directly to low-level architecture-specific programming models. However, developing DSLs is difficult, and using multiple DSLs together in a single application is even harder because existing compiled solutions do not compose together. In this paper, we present four new performance-oriented DSLs developed with Delite, an extensible DSL compilation framework. We demonstrate new techniques to compose compiled DSLs embedded in a common backend together in a single program and show that generic optimizations can be applied across the different DSL sections. Our new DSLs are implemented with a small number of reusable components (less than 9 parallel operators total) and still achieve performance up to 125x better than library implementations and at worst within 30% of optimized stand-alone DSLs. The DSLs retain good performance when composed together, and applying cross-DSL optimizations results in up to an additional 1.82x improvement.
Sigplan Notices | 2015
Vojin Jovanovic; Amir Shaikhha; Sandro Stucki; Vladimir Nikolaev; Christoph Koch
Deeply embedded domain-specific languages (EDSLs) intrinsically compromise programmer experience for improved program performance. Shallow EDSLs complement them by trading program performance for good programmer experience. We present Yin-Yang, a framework for DSL embedding that uses Scala macros to reliably translate shallow EDSL programs to the corresponding deep EDSL programs. The translation allows program prototyping and development in the user friendly shallow embedding, while the corresponding deep embedding is used where performance is important. The reliability of the translation completely conceals the deep em- bedding from the user. For the DSL author, Yin-Yang automatically generates the deep DSL embeddings from their shallow counterparts by reusing the core translation. This obviates the need for code duplication and leads to reliability by construction.
acm special interest group on data communication | 2011
Marco Canini; Vojin Jovanovic; Daniele Venzano; Dejan Novakovic; Dejan Kostic
DiCE is a system for online testing of federated and heterogeneous distributed systems. We have built a prototype of DiCE and integrated it with an open-source BGP router. DiCE quickly detects three important classes of faults, resulting from configuration mistakes, policy conflicts and programming errors. The goal of this demo is to showcase our DiCE prototype while it executes an experiment that involves exploring BGP system behavior in a topology with 27 BGP routers and Internet-like conditions (Figure 1).
Proceedings of the 4th International Workshop on Large Scale Distributed Systems and Middleware | 2010
Marco Canini; Dejan Novakovic; Vojin Jovanovic; Dejan Kostic
We consider the problem of predicting faults in deployed, large-scale distributed systems that are heterogeneous and federated. Motivated by the importance of ensuring reliability of the services these systems provide, we argue that the key step in making these systems reliable is the need to automatically predict faults. For example, doing so is vital for avoiding Internet-wide outages that occur due to programming errors or misconfigurations.
International Workshop on End-to-end Management of Big Data (BigData 2012) | 2012
Stefan Ackermann; Vojin Jovanovic; Tiark Rompf
usenix annual technical conference | 2011
Marco Canini; Vojin Jovanovic; Daniele Venzano; Boris Spasojevic; Olivier Crameri; Dejan Kostic
Archive | 2012
Marco Canini; Olivier Crameri; Kumar Gautam; Vojin Jovanovic; Dejan Kostic; Dejan Novakovic
Archive | 2011
Marco Canini; Vojin Jovanovic; Daniele Venzano; Gautam Kumar; Dejan Novakovic; Dejan Kostic
Archive | 2010
Marco Canini; Vojin Jovanovic; Gautam Kumar; Boris Spasojevic; Olivier Crameri; Dejan Kostic