EDBT 2026 Demo / reviewers in the wild / expert
Jeremiah Willcock
dblp:34/3660 · also Jeremiah J. Willcock
· DBLP profile ↗
18ranked-venue papers
6as first author
1since 2021 · last 2025
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 9 · 5 first-authorSoftware engineering, systems software and programming languages · 8 · 1 first-authorArtificial intelligence and machine learning · 1 · 1 since 2021
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Computer architecture, parallel and distributed computing, and storage systems
3 papers |
Parallel and multicore computing · 73% High-performance computing · 18% Performance modeling and evaluation · 9% | |
| Software engineering, system software, and programming languages
4 papers |
Programming languages and type systems · 76% Software maintenance and evolution · 24% | |
| Theoretical computer science
1 paper |
Graph algorithms and graph theory · 100% |
Topics — the 14 heaviest of 16, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Parallel and multicore computing › parallel programming runtimes
active messages |
0.2 | 1 | 2013 | Expressing graph algorithms using generalized active messages · PPoPP 2013 |
Parallel and multicore computing
parallel programming runtimes |
0.2 | 1 | 2013 | Expressing graph algorithms using generalized active messages · PPoPP 2013 |
Programming languages and type systems › programming paradigms
generic programming |
0.2 | 3 | 2006 | Algorithm specialization in generic programming: challenges of constrained generics in C++ · PLDI 2006 Associated types and constraint propagation for mainstream object-oriented generics · OOPSLA 2005 A comparative study of language support for generic programming · OOPSLA 2003 |
Parallel and multicore computing
parallel graph algorithms |
0.1 | 1 | 2012 | Breaking the speed and scalability barriers for graph exploration on distributed-memory machines · SC 2012 |
Programming languages and type systems
type systems |
0.1 | 3 | 2006 | Algorithm specialization in generic programming: challenges of constrained generics in C++ · PLDI 2006 Associated types and constraint propagation for mainstream object-oriented generics · OOPSLA 2005 A comparative study of language support for generic programming · OOPSLA 2003 |
Parallel and multicore computing › parallel computing › parallel applications
irregular applications |
0.1 | 1 | 2011 | Active pebbles: a programming model for highly parallel fine-grained data-driven computations · PPoPP 2011 |
Parallel and multicore computing
parallel programming models |
0.1 | 1 | 2011 | Active pebbles: a programming model for highly parallel fine-grained data-driven computations · PPoPP 2011 |
Software maintenance and evolution
code clone detection |
0.1 | 1 | 2009 | Detecting code clones in binary executables · ISSTA 2009 |
Programming languages and type systems › type checking
modular typechecking |
0.1 | 1 | 2006 | Algorithm specialization in generic programming: challenges of constrained generics in C++ · PLDI 2006 |
Performance modeling and evaluation
benchmarking |
0.0 | 1 | 2012 | Breaking the speed and scalability barriers for graph exploration on distributed-memory machines · SC 2012 |
Performance modeling and evaluation › benchmarking › parallel benchmark suites
graph500 |
0.0 | 1 | 2012 | Breaking the speed and scalability barriers for graph exploration on distributed-memory machines · SC 2012 |
Software maintenance and evolution
reverse engineering |
0.0 | 1 | 2009 | Detecting code clones in binary executables · ISSTA 2009 |
Programming languages and type systems
object-oriented programming |
0.0 | 1 | 2005 | Associated types and constraint propagation for mainstream object-oriented generics · OOPSLA 2005 |
Programming languages and type systems › type systems
subtyping |
0.0 | 1 | 2005 | Associated types and constraint propagation for mainstream object-oriented generics · OOPSLA 2005 |
Methods — techniques the papers use, named apart from their topics
software routing · 0.3message combining · 0.3message coalescing · 0.3distributed-memory parallelization · 0.1algorithm optimization · 0.1data-driven execution model · 0.1constrained generics · 0.1c++ templates · 0.1formal semantics · 0.1f-bounded polymorphism · 0.1comparative language study · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Spark Transformer: Reactivating Sparsity in Transformer FFN and AttentionabstractThe discovery of the *lazy neuron phenomenon* (Li et al., 2022), where fewer than 10% of the feedforward networks (FFN) parameters in trained Transformers are activated per token, has spurred significant interests in *activation sparsity* for enhancing large model efficiency. While notable progress has been made in translating such sparsity to wall-time benefits across CPUs, GPUs, and TPUs, modern Transformers have moved away from the ReLU activation function crucial to this phenomenon. Existing efforts on re-introducing activation sparsity, e.g., by reverting to ReLU or applying top-k masking, often degrade model quality, increase parameter count, or complicate training. Sparse attention, the application of sparse activation to the attention mechanism, often face similar challenges.
This paper introduces the Spark Transformer, a novel architecture that achieves high activation sparsity in both FFN and the attention mechanism while maintaining model quality, parameter count, and standard training procedures. Our method realizes sparsity via top-$k$ masking for explicit control over sparsity level. Crucially, we introduce *statistical top-k*, a hardware-accelerator-friendly, linear-time approximate algorithm that avoids costly sorting and mitigates significant training slowdown from standard top-k operators. Furthermore, Spark Transformer reallocates existing FFN parameters and attention key embeddings to form a low-cost predictor for identifying activated entries. This design not only mitigates quality loss from enforced sparsity, but also enhances wall-time benefit. Pretrained with the Gemma-2 recipe, Spark Transformer demonstrates competitive performance on standard benchmarks while exhibiting significant sparsity: only 8\% of FFN neurons are activated, and each token attends to a maximum of 256 tokens. This translates to a 2.5x reduction in FLOPs, leading to decoding wall-time speedups of up to 1.79x on CPU and 1.40xon GPU. Chong You, Zhipeng Jia, Lin Chen 0003, Srinadh Bhojanapalli, Jiaxian Guo, Utku Evci, Jan Wassenberg, Praneeth Netrapalli, Jeremiah Willcock, Suvinay Subramanian, Felix Chern, Alek Andreev, Shreya Pathak, Felix X. Yu, Prateek Jain 0002, David E. Culler, Henry M. Levy, Sanjiv Kumar |
NeurIPS | 10 |
| 2013 | Expressing graph algorithms using generalized active messagesabstractRecently, graph computation has emerged as an important class of high-performance computing application whose characteristics differ markedly from those of traditional, compute-bound kernels. Libraries such as BLAS, LAPACK, and others have been successful in codifying best practices in numerical computing. The data-driven nature of graph applications necessitates a more complex application stack incorporating runtime optimization. In this paper, we present a method of phrasing graph algorithms as collections of asynchronous, concurrently executing, concise code fragments which may be invoked both locally and in remote address spaces. A runtime layer performs a number of dynamic optimizations, including message coalescing, message combining, and software routing. We identify a number of common patterns in these algorithms, and explore how this programming model can express those patterns. Algorithmic transformations are discussed which expose asyn- chrony that can be leveraged by the runtime to improve performance and reduce resource utilization. Practical implementations and performance results are provided for a number of representative algorithms. Nicholas Gerard Edmonds, Jeremiah Willcock, Andrew Lumsdaine |
ICS | 2 |
| 2013 | Expressing graph algorithms using generalized active messagesabstractRecently, graph computation has emerged as an important class of high-performance computing application whose characteristics differ markedly from those of traditional, compute-bound, kernels. Libraries such as BLAS, LAPACK, and others have been successful in codifying best practices in numerical computing. The data-driven nature of graph applications necessitates a more complex application stack incorporating runtime optimization. In this paper, we present a method of phrasing graph algorithms as collections of asynchronous, concurrently executing, concise code fragments which may be invoked both locally and in remote address spaces. A runtime layer performs a number of dynamic optimizations, including message coalescing, message combining, and software routing. Practical implementations and performance results are provided for a number of representative algorithms. Nicholas Gerard Edmonds, Jeremiah Willcock, Andrew Lumsdaine |
PPoPP | 2 |
| 2012 | Breaking the speed and scalability barriers for graph exploration on distributed-memory machinesabstractIn this paper, we describe the challenges involved in designing a family of highly-efficient Breadth-First Search (BFS) algorithms and in optimizing these algorithms on the latest two generations of Blue Gene machines, Blue Gene/P and Blue Gene/Q. With our recent winning Graph 500 submissions in November 2010, June 2011, and November 2011, we have achieved unprecedented scalability results in both space and size. On Blue Gene/P, we have been able to parallelize a scale 38 problem with 238 vertices and 242 edges on 131,072 processing cores. Using only four racks of an experimental configuration of Blue Gene/Q, we have achieved a processing rate of 254 billion edges per second on 65,536 processing cores. This paper describes the algorithmic design and the main classes of optimizations that we have used to achieve these results. Fabio Checconi, Fabrizio Petrini, Jeremiah Willcock, Andrew Lumsdaine, Anamitra R. Choudhury, Yogish Sabharwal |
SC | 3 |
| 2011 | Partial globalization of partitioned address spaces for zero-copy communication with shared memoryabstractWe have developed a high-level language, called Kanor, for declaratively specifying communication in parallel programs. Designed as an extension of C++, it serves to coordinate partitioned address space programs written in the bulk synchronous parallel (BSP) style. Kanor's declarative semantics enable the programmers to write correct and maintainable parallel applications. The communication abstraction has been carefully designed to be amenable to compiler optimizations. While partitioned address space programming has several advantages, it needs special compiler optimizations to effectively leverage the shared memory hardware when running on multicore machines. In this paper, we introduce such shared-memory optimizations in the context of Kanor. One major way we achieve these optimizations is by selectively moving some of the variables into a globally shared address space - a process that we term partial globalization. We identify scenarios in which such a transformation is beneficial, and present an algorithm to identify and correctly transform Kanor communication steps into zero-copy communication using hardware shared memory, by introducing minimal synchronization. We then present a runtime strategy that complements the compiler algorithm to eliminate most of the runtime synchronization overheads by using a copy-on-conflict technique. Finally, we show that our solution often performs much better than shared-memory optimized MPI, and ne ver performs significantly worse than MPI even in the presence of dependencies introduced due to buffer sharing. The techniques in this paper demonstrate that it is possible to program in a partitioned address space style, without sacrificing the performance advantages of hardware shared memory. To the best of our knowledge no other automatic compiler techniques have been developed so far that achieve zero-copy communication from a partitioned address space program. We expect out results to be applicable beyond Kanor, to other partitioned address space programming environments, such as MPI. Fangzhou Jiao, Nilesh Mahajan, Jeremiah Willcock, Arun Chauhan 0001, Andrew Lumsdaine |
HiPC | 3 |
| 2011 | Active pebbles: parallel programming for data-driven applicationsabstractThe scope of scientific computing continues to grow and now includes diverse application areas such as network analysis, combinatorialcomputing, and knowledge discovery, to name just a few. Large problems in these application areas require HPC resources, but they exhibit computation and communication patterns that are irregular, fine-grained, and non-local, making it difficult to apply traditional HPC approaches to achieve scalable solutions. In this paper we present Active Pebbles, a programming and execution model developed explicitly to enable the development of scalable software for these emerging application areas. Our approach relies on five main techniques--scalable addressing, active routing, message coalescing, message reduction, and termination detection--to separate algorithm expression from communication optimization. Using this approach, algorithms can be expressed in their natural forms, with their natural levels of granularity, while optimizations necessary for scalability can be applied automatically to match the characteristics of particular machines. We implement several example kernels using both Active Pebbles and existing programming models, evaluating both programmability and performance. Our experimental results demonstrate that the Active Pebbles model can succinctly and directly express irregular application kernels, while still achieving performance comparable to MPI-based implementations that are significantly more complex. Jeremiah Willcock, Torsten Hoefler, Nicholas Gerard Edmonds, Andrew Lumsdaine |
ICS | 1 |
| 2011 | Kanor - A Declarative Language for Explicit Communication
Eric Holk, William E. Byrd, Jeremiah Willcock, Torsten Hoefler, Arun Chauhan 0001, Andrew Lumsdaine |
PADL | 3 |
| 2011 | Active pebbles: a programming model for highly parallel fine-grained data-driven computationsabstractA variety of programming models exist to support large-scale, distributed memory, parallel computation. These programming models have historically targeted coarse-grained applications with natural locality such as those found in a variety of scientific simulations of the physical world. Fine-grained, irregular, and unstructured applications such as those found in biology, social network analysis, and graph theory are less well supported. We propose Active Pebbles, a programming model which allows these applications to be expressed naturally; an accompanying execution model ensures performance and scalability. Jeremiah Willcock, Torsten Hoefler, Nicholas Gerard Edmonds, Andrew Lumsdaine |
PPoPP | 1 |
| 2010 | AM++: a generalized active message frameworkabstractActive messages have proven to be an effective approach for certain communication problems in high performance computing. Many MPI implementations, as well as runtimes for Partitioned Global Address Space languages, use active messages in their low-level transport layers. However, most active message frameworks have low-level programming interfaces that require significant programming effort to use directly in applications and that also prevent optimization opportunities. In this paper we present AM++, a new user-level library for active messages based on generic programming techniques. Our library allows message handlers to be run in an explicit loop that can be optimized and vectorized by the compiler and that can also be executed in parallel on multicore architectures. Runtime optimizations, such as message combining and filtering, are also provided by the library, removing the need to implement that functionality at the application level. Evaluation of AM++ with distributed-memory graph algorithms shows the usability benefits provided by these library features, as well as their performance advantages. Jeremiah Willcock, Torsten Hoefler, Nicholas Gerard Edmonds, Andrew Lumsdaine |
PACT | 1 |
| 2009 | Reusable, generic program analyses and transformationsabstractThe optimizations in modern compilers are constructed for a predetermined set of primitive types. As a result, programmers are unable to exploit optimizations for user-defined types where these optimizations would be correct and beneficial. Moreover, because the set of optimizations is also fixed, programmers are unable to incorporate new optimizations into the compiler. To address these limitations, we apply the reuse methodologies from generic programming to compiler analyses and optimizations. To enable compilers to apply optimizations to classes of types rather than particular types, we define optimizations in terms of generic interface descriptions (similar to C++ concepts or Haskell type classes). By extending these interface descriptions to include associated program analysis and transformation fragments, we enable compilers to incorporate user-defined transformations and analyses. Since these transformations are explicitly associated with interface descriptions, they can be applied in generic fashion by the compiler. We demonstrate that classical compiler optimizations, when generalized using this framework, can apply to a broad range of types, both built-in and user-defined. Finally, we present an initial implementation, the principles of which are generalizable to other compilers. Jeremiah Willcock, Andrew Lumsdaine, Daniel J. Quinlan |
GPCE | 1 |
| 2009 | Detecting code clones in binary executablesabstractLarge software projects contain significant code duplication, mainly due to copying and pasting code. Many techniques have been developed to identify duplicated code to enable applications such as refactoring, detecting bugs, and protecting intellectual property. Because source code is often unavailable, especially for third-party software, finding duplicated code in binaries becomes particularly important. However, existing techniques operate primarily on source code, and no effective tool exists for binaries. Andreas Sæbjørnsen, Jeremiah Willcock, Thomas Panas, Daniel J. Quinlan, Zhendong Su 0001 |
ISSTA | 2 |
| 2007 | An extended comparative study of language support for generic programmingabstractAbstract Many modern programming languages support basic generics, sufficient to implement type-safe polymorphic containers. Some languages have moved beyond this basic support, and in doing so have enabled a broader, more powerful form of generic programming. This paper reports on a comprehensive comparison of facilities for generic programming in eight programming languages: C++, Standard ML, Objective Caml, Haskell, Eiffel, Java, C# (with its proposed generics extension), and Cecil. By implementing a substantial example in each of these languages, we illustrate how the basic roles of generic programming can be represented in each language. We also identify eight language properties that support this broader view of generic programming: support for multi-type concepts, multiple constraints on type parameters, convenient associated type access, constraints on associated types, retroactive modeling, type aliases, separate compilation of algorithms and data structures, and implicit argument type deduction for generic algorithms. We find that these features are necessary to avoid awkward designs, poor maintainability, and painfully verbose code. As languages increasingly support generics, it is important that language designers understand the features necessary to enable the effective use of generics and that their absence can cause difficulties for programmers. Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy G. Siek, Jeremiah Willcock |
J. Funct. Program. | 5 |
| 2006 | Accelerating sparse matrix computations via data compressionabstractSparse matrix computations are important for many scientific computations, with matrix-vector multiplication being a fundamental operation for modern iterative algorithms. For large sparse matrices, the primary performance limitation on matrix-vector product is memory bandwidth, rather than algorithm performance. In fact, the wide disparity between memory bandwidth and CPU performance suggests that one could trade cycles for bandwidth and still improve the time to compute a matrix-vector product. Accordingly, this paper presents an approach to improving the performance of matrix-vector product based on lossless compression of the index information commonly stored in sparse matrix representations. Two compressed formats, and their multiplication algorithms, are given, along with experimental results demonstrating their effectiveness. For an assortment of large sparse matrices, compression ratios and corresponding speedups of up to 30% are achieved. The efficiency of the compression algorithm allows its cost to be easily amortized across repeated matrix-vector products. Jeremiah Willcock, Andrew Lumsdaine |
ICS | 1 |
| 2006 | Algorithm specialization in generic programming: challenges of constrained generics in C++abstractGeneric programming has recently emerged as a paradigm for developing highly reusable software libraries, most notably in C++. We have designed and implemented a constrained generics extension for C++ to support modular type checking of generic algorithms and to address other issues associated with unconstrained generics. To be as broadly applicable as possible, generic algorithms are defined with minimal requirements on their inputs. At the same time, to achieve a high degree of efficiency, generic algorithms may have multiple implementations that exploit features of specific classes of inputs. This process of algorithm specialization relies on non-local type information and conflicts directly with the local nature of modular type checking. In this paper, we review the design and implementation of our extensions for generic programming in C++, describe the issues of algorithm specialization and modular type checking in detail, and discuss the important design tradeoffs in trying to accomplish both.We present the particular design that we chose for our implementation, with the goal of hitting the sweet spot in this interesting design space. Jaakko Järvi, Douglas P. Gregor, Jeremiah Willcock, Andrew Lumsdaine, Jeremy G. Siek |
PLDI | 3 |
| 2005 | Associated types and constraint propagation for mainstream object-oriented genericsabstractSupport for object-oriented programming has become an integral part of mainstream languages, and more recently generic programming has gained widespread acceptance as well. A natural question is how these two paradigms, and their underlying language mechanisms, should interact. One particular design option, that of using subtyping to constrain the type parameters of generic functions, has been chosen in the generics of Java and those planned for a future revision of C#.Certain shortcomings have previously been identified in using subtyping for constraining parametric polymorphism in the context of generic programming.To address these, we propose extending object-oriented interfaces and subtyping to include associated types and constraint propagation.Associated types are type members of interfaces and classes. Constraint propagation allows certain constraints on type parameters to be inferred from other constraints on those parameters and their use in base class type expressions.The paper demonstrates these extensions in the context of C# (with generics), describes a translation of the extended features to C#, and presents a formalism proving their safety. The formalism is applicable to other mainstream object-oriented languages supporting F-bounded polymorphism, such as Java. Jaakko Järvi, Jeremiah Willcock, Andrew Lumsdaine |
OOPSLA | 2 |
| 2005 | Using MPI with C# and the Common Language InfrastructureabstractAbstract We describe two different libraries for using the Message Passing Interface (MPI) with the C# programming language and the Common Language Infrastructure (CLI). The first library provides C# bindings that closely match the original MPI library specification. The second library presents a fully object‐oriented interface to MPI and exploits modern language features of C#. The interfaces described here use the P/Invoke feature of the CLI to dispatch to a native implementation of MPI, such as LAM/MPI or MPICH. Performance results using the Shared Source CLI demonstrate only a small performance overhead. Copyright © 2005 John Wiley & Sons, Ltd. Jeremiah Willcock, Andrew Lumsdaine, Arch D. Robison |
Concurr. Pract. Exp. | 1 |
| 2003 | Concept-Controlled Polymorphism
Jaakko Järvi, Jeremiah Willcock, Andrew Lumsdaine |
GPCE | 2 |
| 2003 | A comparative study of language support for generic programmingabstractMany modern programming languages support basic generic programming, sufficient to implement type-safe polymorphic containers. Some languages have moved beyond this basic support to a broader, more powerful interpretation of generic programming, and their extensions have proven valuable in practice. This paper reports on a comprehensive comparison of generics in six programming languages: C++, Standard ML, Haskell, Eiffel, Java (with its proposed generics extension), and Generic C. By implementing a substantial example in each of these languages, we identify eight language features that support this broader view of generic programming. We find these features are necessary to avoid awkward designs, poor maintainability, unnecessary run-time checks, and painfully verbose code. As languages increasingly support generics, it is important that language designers understand the features necessary to provide powerful generics and that their absence causes serious difficulties for programmers. Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy G. Siek, Jeremiah Willcock |
OOPSLA | 5 |