EDBT 2026 Demo / reviewers in the wild / expert
Thomas J. LeBlanc
dblp:77/2432
· DBLP profile ↗
28ranked-venue papers
12as first author
0since 2021 · last 1994
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 20 · 7 first-authorSoftware engineering, systems software and programming languages · 8 · 3 first-authorComputer networks · 1 · 1 first-authorDatabases, data management, data science and information retrieval · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author
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
12 papers |
Parallel and multicore computing · 47% Memory systems · 34% Performance modeling and evaluation · 8% | |
| Software engineering, system software, and programming languages
8 papers |
Compilers and program optimization · 42% Operating systems · 36% Programming languages and type systems · 9% |
Topics — the 30 heaviest of 36, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Memory systems
cache coherence |
0.0 | 3 | 1994 | Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994 Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · SC 1992 Adjustable Block Size Coherent Caches · ISCA 1992 |
Parallel and multicore computing
parallel programming models |
0.0 | 3 | 1994 | Parallel Programming with Control Abstraction · ACM Trans. Program. Lang. Syst. 1994 Multi-Model Parallel Programming in Psyche · PPoPP 1990 First-Class User-Level Theads · SOSP 1991 |
Parallel and multicore computing › parallel scheduling
loop scheduling |
0.0 | 2 | 1994 | Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994 Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · SC 1992 |
Compilers and program optimization
parallelizing compiler |
0.0 | 1 | 1994 | Parallel Programming with Control Abstraction · ACM Trans. Program. Lang. Syst. 1994 |
Memory systems
data locality |
0.0 | 1 | 1994 | Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994 |
Parallel and multicore computing › parallel computing
parallel application performance |
0.0 | 1 | 1994 | Parallel performance using lost cycles analysis · SC 1994 |
Parallel and multicore computing
parallel programming models and runtimes |
0.0 | 1 | 1994 | Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994 |
Performance modeling and evaluation
performance tuning |
0.0 | 1 | 1994 | Parallel performance using lost cycles analysis · SC 1994 |
Embedded and real-time systems › real-time scheduling › multiprocessor scheduling
processor affinity |
0.0 | 1 | 1994 | Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994 |
Parallel and multicore computing › parallel computing
parallel programming languages |
0.0 | 1 | 1993 | Common runtime support for high-performance parallel languages · SC 1993 |
Parallel and multicore computing
parallel programming runtimes |
0.0 | 1 | 1993 | Common runtime support for high-performance parallel languages · SC 1993 |
Memory systems
cache |
0.0 | 1 | 1992 | Adjustable Block Size Coherent Caches · ISCA 1992 |
Memory systems › cache › multiprocessor cache
coherent cache |
0.0 | 1 | 1992 | Adjustable Block Size Coherent Caches · ISCA 1992 |
Memory systems › cache coherence
false sharing |
0.0 | 1 | 1992 | Adjustable Block Size Coherent Caches · ISCA 1992 |
Operating systems › resource management › process management
user-level threads |
0.0 | 1 | 1991 | First-Class User-Level Theads · SOSP 1991 |
Operating systems › multiprocessing
multiprocessor operating system |
0.0 | 1 | 1990 | Multi-Model Parallel Programming in Psyche · PPoPP 1990 |
Compilers and program optimization
program instrumentation |
0.0 | 1 | 1989 | A Software Instruction Counter · ASPLOS 1989 |
Debugging and program repair › record and replay
deterministic replay |
0.0 | 1 | 1987 | Debugging Parallel Programs with Instant Replay · IEEE Trans. Computers 1987 |
Performance modeling and evaluation
analytical modeling |
0.0 | 1 | 1994 | Parallel performance using lost cycles analysis · SC 1994 |
Parallel and multicore computing › multiprocessor system
shared-memory multiprocessor |
0.0 | 1 | 1994 | Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994 |
Distributed systems
distributed system modeling |
0.0 | 1 | 1985 | HPC: A Model of Structure and Change in Distributed Systems · IEEE Trans. Computers 1985 |
Compilers and program optimization
parallel language compilation |
0.0 | 1 | 1993 | Common runtime support for high-performance parallel languages · SC 1993 |
Programming languages and type systems
distributed programming languages |
0.0 | 1 | 1984 | Programming Language Support for Read-Time Distributed Systems · ICDE 1984 |
Program analysis
static analysis |
0.0 | 1 | 1984 | Programming Language Support for Read-Time Distributed Systems · ICDE 1984 |
Embedded and real-time systems
distributed real-time systems |
0.0 | 1 | 1984 | Programming Language Support for Read-Time Distributed Systems · ICDE 1984 |
Distributed systems
programming language support |
0.0 | 1 | 1984 | Programming Language Support for Read-Time Distributed Systems · ICDE 1984 |
Parallel and multicore computing › multiprocessor system
scalable multiprocessor |
0.0 | 1 | 1992 | Adjustable Block Size Coherent Caches · ISCA 1992 |
Compilers and program optimization
compiler construction |
0.0 | 1 | 1983 | A Symbol Table Abstraction to Implement Languages with Explicit Scope Control · IEEE Trans. Software Eng. 1983 |
Compilers and program optimization › compiler construction
symbol table |
0.0 | 1 | 1983 | A Symbol Table Abstraction to Implement Languages with Explicit Scope Control · IEEE Trans. Software Eng. 1983 |
Processor architecture and microarchitecture
debugging support |
0.0 | 1 | 1989 | A Software Instruction Counter · ASPLOS 1989 |
Methods — techniques the papers use, named apart from their topics
workload balancing · 0.0synchronization minimization · 0.0runtime system · 0.0software interrupts · 0.0lightweight processes · 0.0overhead profiling · 0.0analytic modeling · 0.0simulation · 0.0processor affinity · 0.0shared-memory communication · 0.0shared memory communication · 0.0message passing · 0.0prototype implementation · 0.0event ordering · 0.0static checking · 0.0language design · 0.0hashed symbol table · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 1994 | Can High Bandwidth and Latency Justify Large Cache Blocks in Scalable Multiprocessors?abstractAn important architectural design decision affecting the performance of coherent caches is the choice of block size. There are two primary factors that influence this choice: the reference behavior of applications and the remote access bandwidth and latency of the machine. Given that we anticipate increases in both network bandwidth and latency (in processor cycles) in scalable shared-memory multiprocessors, the question arises as to what effect these increases will have on the choice of block size. We use analytical modeling and execution-driven simulation of parallel programs on a large-scale shared-memory machine to examine the relationship between cache block size and application performance as a function of remote access bandwidth and latency. We show that even under assumptions of high remote access bandwidth and latency, the best application performance usually results from using cache blocks between S2 and 128 bytes in size. We also show that modifying the program to remove the dominant source of misses may not increase the best performing block size. We conclude that large cache blocks cannot be justified in most realistic scenarios. Ricardo Bianchini, Thomas J. LeBlanc |
ICPP (1) | 2 |
| 1994 | Parallel performance using lost cycles analysisabstractMost performance debugging and tuning of parallel programs is based on the "measure-modify" approach, which is heavily dependent on detailed measurements of programs during execution. This approach is extremely time consuming and does not lend itself to predicting performance under varying conditions. Analytic modeling and scalability analysis provide predictive power, but are not widely used in practice, due primarily to their emphasis on asymptotic behavior and the difficulty of developing accurate models that work for real world programs. We describe a set of tools for performance tuning of parallel programs that bridges this gap between measurement and modeling. The approach is based on lost cycles analysis, which involves measurement and modeling of all sources of overhead in a parallel program. We first describe a tool for measuring overheads in parallel programs that we have incorporated onto the runtime environment for Fortran programs on the Kendall Square KSR1. We then describe a tool that fits these overhead measurements to analytic forms. We illustrate the use of these tools by analyzing the performance tradeoffs among parallel implementations of 2D FFT. These examples show how our tools enable programmers to develop accurate performance models of parallel applications without requiring extensive performance modeling expertise.> Mark Crovella, Thomas J. LeBlanc |
SC | 2 |
| 1994 | The Advantages of Multiple Parallelizations in Combinatorial SearchabstractApplications typically have several potential sources of parallelism, and in choosing a particular parallelization, the programmer must balance the benefits of each source of parallelism with the corresponding overhead. The trade-offs are often difficult to analyze, as they may depend on the hardware architecture, software environment, input data, and properties of the algorithm. An example of this dilemma occurs in a wide range of problems that involve processing trees, wherein processors can be assigned either to separate subtrees, or to parallelizing the work performed on individual tree nodes. We explore the complexity of the trade-offs involved in this decision by considering alternative parallelizations of combinatorial search, examining the factors that determine the best-performing implementation for this important class of problems. Using subgraph isomorphism as a representative search problem, we show how the density of the solution space, the number of solutions desired, the number of available processors, and the underlying architecture all affect the choice of an efficient parallelization. Our experiments, which span seven different shared-memory multiprocessors and a wide range of input graphs, indicate that relative performance depends on each of these factors. On some machines and for some inputs, a sequential depth-first search of the solution space, applying simple loop-level parallelism at each node in the search tree, performs best. On other machines or other inputs, parallel tree search performs best. In still other cases, a hybrid solution, containing both parallel tree search and loop parallelism, works best. We present a quantitative analysis that explains these results and present experimental data culled from thousands of program executions that validates the analysis. From these experiences we conclude that there is no one "best" parallelization that suffices over a range of machines, inputs, and precise problem specifications. As a corollary, we provide quantitative evidence that programming environments and languages should not focus exclusively on flat data parallelism, since nested parallelism or hybrid forms of parallelism may be required for an efficient implementation of some applications. Lawrence A. Crowl, Mark Crovella, Thomas J. LeBlanc, Michael L. Scott |
J. Parallel Distributed Comput. | 3 |
| 1994 | Parallel Programming with Control AbstractionabstractParallel programming involves finding the potential parallelism in an application and mapping it to the architecture at hand. Since a typical application has more potential parallelism than any single architecture can exploit effectively, programmers usually limit their focus to the parallelism that the available control constructs express easily and that the given architecture exploits efficiently. This approach produces programs that exhibit much less parallelism that exists in the application, and whose performance depends critically on the underlying hardware and software. We argue for an alternative approach based oncontrol abstraction. Control abstraction is the process by which programmers define new control constructs, specifying constraints on statement ordering separately from an implementation of that ordering. With control abstraction programmers can define and use a rich variety of control constructs to represent an algorithm's potential parallelism. Since control abstraction separates the definition of a construct from its implementation, a construct may have several different implementations, each exploiting a different subset of the parallelism admitted by the construct. By selecting an implementation for each control construct using annotations, a programmer can vary the parallelism in a program to best exploit the underlying hardware without otherwise changing the source code. This approach produces programs that exhibit most of the potential parallelism in an algorithm, and whose performance can be tuned simply by choosing among the various implementations for the control constructs in use. Lawrence A. Crowl, Thomas J. LeBlanc |
ACM Trans. Program. Lang. Syst. | 2 |
| 1994 | Using Processor Affinity in Loop Scheduling on Shared-Memory MultiprocessorsabstractLoops are the single largest source of parallelism in many applications. One way to exploit this parallelism is to execute loop iterations in parallel on different processors. Previous approaches to loop scheduling attempted to achieve the minimum completion time by distributing the workload as evenly as possible while minimizing the number of synchronization operations required. The authors consider a third dimension to the problem of loop scheduling on shared-memory multiprocessors: communication overhead caused by accesses to nonlocal data. They show that traditional algorithms for loop scheduling, which ignore the location of data when assigning iterations to processors, incur a significant performance penalty on modern shared-memory multiprocessors. They propose a new loop scheduling algorithm that attempts to simultaneously balance the workload, minimize synchronization, and co-locate loop iterations with the necessary data. They compare the performance of this new algorithm to other known algorithms by using five representative kernel programs on a Silicon Graphics multiprocessor workstation, a BBN Butterfly, a Sequent Symmetry, and a KSR-1, and show that the new algorithm offers substantial performance improvements, up to a factor of 4 in some cases. The authors conclude that loop scheduling algorithms for shared-memory multiprocessors cannot afford to ignore the location of data, particularly in light of the increasing disparity between processor and memory speeds.> Evangelos P. Markatos, Thomas J. LeBlanc |
IEEE Trans. Parallel Distributed Syst. | 2 |
| 1993 | Common runtime support for high-performance parallel languagesabstractNo abstract available. Geoffrey C. Fox, Sanjay Ranka, Michael L. Scott, Allen D. Malony, James C. Browne, Marina C. Chen, Alok N. Choudhary, Thomas E. Cheatham, Janice E. Cuny, Rudolf Eigenmann, Amr F. Fahmy, Ian T. Foster, Dennis Gannon, Tomasz Haupt, Carl Kesselman, Charles Koelbel, Wei Li 0015, Monica S. Lam, Thomas J. LeBlanc, Jim Openshaw, David A. Padua, Constantine D. Polychronopoulos, Joel H. Saltz, Alan Sussman, Gil Weigand, Katherine A. Yelick |
SC | 19 |
| 1993 | Kernel-Kernel communication in a shared-memory multiprocessorabstractAbstract In the standard kernel organization on a bus‐based multiprocessor, all processors share the code and data of the operating system; explicit synchronization is used to control access to kernel data structures. Distributed‐memory multicomputers use an alternative approach, in which each instance of the kernel performs local operations directly and uses remote invocation to perform remote operations. Either approach to interkernel communication can be used in a large‐scale shared‐memory multiprocessor. In the paper we discuss the issues and architectural features that must be considered when choosing between remote memory access and remote invocation. We focus in particular on experience with the Psyche multiprocessor operating system on the BBN Butterfly Plus. We find that the Butterfly architecture is biased towards the use of remote invocation for kernel operations that perform a significant number of memory references, and that current architectural trends are likely to increase this bias in future machines. This conclusion suggests that straightforward parallelization of existing kernels (e.g. by using semaphores to protect shared data) is unlikely in the future to yield acceptable performance. We note, however, that remote memory access is useful for small, frequently‐executed operations, and is likely to remain so. Eliseu M. Chaves Jr., Prakash Das, Thomas J. LeBlanc, Brian D. Marsh, Michael L. Scott |
Concurr. Pract. Exp. | 3 |
| 1992 | Load Balancing vs. Locality Management in Shared-Memory Multiprocessors
Evangelos P. Markatos, Thomas J. LeBlanc |
ICPP (1) | 2 |
| 1992 | Adjustable Block Size Coherent CachesabstractSeveral studies have shown that the performance of coherent caches depends on the relationship between the granularity of sharing and locality exhibited by the program and the cache block size. Large cache blocks exploit processor and spatial locality, but may cause unnecessary cache invalidations due to false sharing. Small cache blocks can reduce the number of cache invalidations, but increase the nuber of bus or network transactions required to load data into the cache. In this paper we describe a cache organization that dynamically adjusts the cache block size according to recently observed reference behavior. Cache blocks are split across cache lines when false sharing occurs, ad merged back into a single cache line to explit spatial locality. To evaluate this cache organization, we simulate a scalable multiprocessor with coherent caches, using a suite of memory reference traces to model program behavior. We show that for evry fixed block size, some program suffers a 33% increase in the average waiting time per reference, and a factor of 2 increase in the average number of words transferred per reference, when compared against the performance of an adjustable block size cache. In the few cases where adjusting the block size does not provide superior performance, it comes within 7% of the best fixed block size alternative. We conclude that an adjustable block size cache offers significantly better performance than every fixed block size cache, especially when there is variability in the granularity of sharing exhibited by applications. Cezary Dubnicki, Thomas J. LeBlanc |
ISCA | 2 |
| 1992 | Using Processor Affinity in Loop Scheduling on Shared-Memory MultiprocessorsabstractThe authors consider a new dimension to the problem of loop scheduling on shared-memory multiprocessors: communication overhead caused by accesses to nonlocal data. It is shown that traditional algorithms for loop scheduling, which ignore the location of data when assigning iterations to processors, incur a significant performance penalty on modern shared-memory multiprocessors. The authors propose a loop scheduling algorithm that attempts to simultaneously balance the workload, minimize synchronization, and colocate loop iterations with the necessary data. They compare the performance of this algorithm to that of other known algorithm using four representative applications on a Silicon Graphics multiprocessor workstation, a BBN Butterfly, and a Sequent Symmetry, and they show that the algorithm offers substantial performance improvements, up to a factor of 3 in some cases. They conclude that loop scheduling algorithms for shared-memory multiprocessors cannot afford to ignore the location of data, particularly in light of the increasing disparity between processor and memory speeds.> Evangelos P. Markatos, Thomas J. LeBlanc |
SC | 2 |
| 1992 | Operating System Support for Animate VisionabstractAnimate vision systems couple computer vision and robotics to achieve robust and accurate vision, as well as other complex behavior. These systems combine low-level sensory processing and effector output with high-level cognitive planning—all computationally intensive tasks that can benefit from parallel processing. A typical animate vision application will likely consist of many tasks, each of which may require a different parallel programming model, and all of which must cooperate to achieve the desired behavior. These multi-model programs require an underlying software system that not only supports several different models of parallel computation simultaneously, but which also allows tasks implemented in different models to interact. This paper describes the Psyche multiprocessor operating system, which was designed to support multi-model programming, and the Rochester Checkers Player, a multi-model robotics program that plays checkers against a human opponent. Psyche supports a variety of parallel programming models within a single operating system by according first-class status to processes implemented in user space. It also supports interactions between programming models using model-independent communication, wherein different types of processes communicate and synchronize without relying on the semantics or implementation of a particular programming model. The implementation of the Checkers Player, in which different parallel programming models are used for vision, robot motion planning, and strategy, illustrates the use of the Psyche mechanisms in an application program, and demonstrates many of the advantages of multi-model programming for animate vision systems. Brian D. Marsh, Thomas J. LeBlanc, Michael L. Scott, Timothy G. Becker, Prakash Das, Jonas Karlsson 0003, Cesar Quiroz |
J. Parallel Distributed Comput. | 3 |
| 1991 | First-Class User-Level TheadsabstractIt is often desirable, for reasons of clarity, portability, and efficiency, to write parallel programs in which the number of processes is independent of the number of available processors. Several modern operating systems support more than one process in an address space, but the overhead of creating and synchronizing kernel processes can be high. Many runtime environments implement lightweight processes (threads) in user space, but this approach usually results in second-class status for threads, making it difficult or impossible to perform scheduling operations at appropriate times (e.g. when the current thread blocks in the kernel). In addition, a lack of common assumptions may also make it difficult for parallel programs or library routines that use dissimilar thread packages to communicate with each other, or to synchronize access to shared data.We describe a set of kernel mechanisms and conventions designed to accord first-class status to user-level threads, allowing them to be used in any reasonable way that traditional kernel-provided processes can be used, while leaving the details of their implementation to user-level code. The key features of our approach are (1) shared memory for asynchronous communication between the kernel and the user, (2) software interrupts for events that might require action on the part of a user-level scheduler, and (3) a scheduler interface convention that facilitates interactions in user space between dissimilar kinds of threads. We have incorporated these mechanisms in the Psyche parallel operating system, and have used them to implement several different kinds of user-level threads. We argue for our approach in terms of both flexibility and performance. Brian D. Marsh, Michael L. Scott, Thomas J. LeBlanc, Evangelos P. Markatos |
SOSP | 3 |
| 1990 | Multi-Model Parallel Programming in PsycheabstractMany different parallel programming models, including lightweight processes that communicate with shared memory and heavyweight processes that communicate with messages, have been used to implement parallel applications. Unfortunately, operating systems and languages designed for parallel programming typically support only one model. Multi-model parallel programming is the simultaneous use of several different models, both across programs and within a single program. This paper describes multi-model parallel programming in the Psyche multiprocessor operating system. We explain why multi-model programming is desirable and present an operating system interface designed to support it. Through a series of three examples, we illustrate how the Psyche operating system supports different models of parallelism and how the different models are able to interact. Michael L. Scott, Thomas J. LeBlanc, Brian D. Marsh |
PPoPP | 2 |
| 1990 | Analyzing Parallel Program Executions Using Multiple ViewsabstractTo understand a parallel program's execution we must be able to analyze lots of information describing complex relationships among many processes. Various techniques have been used, from program replay to program animation, but each has limited applicability and the lack of a common foundation precludes an integrated solution. Our approach to parallel program analysis is based on a multiplicity of views of an execution. We use a synchronization trace captured during execution to construct a graph representation of the program's behavior. A user manipulates this representation to create and fine-tune visualizations using an integrated, programmable toolkit. Additional execution details can be recovered as needed using program replay to reconstruct an execution from an existing synchronization trace. We present a framework for describing views of a parallel program's execution, and an analysis methodology that relates a sequence of views to the program development cycle. We then describe our toolkit implementation and explain how users construct visualizations using the toolkit. Finally, we present an extended example to illustrate both our methodology and the power of our programmable toolkit. Thomas J. LeBlanc, John M. Mellor-Crummey, Robert J. Fowler |
J. Parallel Distributed Comput. | 1 |
| 1989 | A Software Instruction CounterabstractAlthough several recent papers have proposed architectural support for program debugging and profiling, most processors do not yet provide even basic facilities, such as an instruction counter. As a result, system developers have been forced to invent software solutions. This paper describes our implementation of a software instruction counter for program debugging. We show that an instruction counter can be reasonably implemented in software, often with less than 10% execution overhead. Our experience suggests that a hardware instruction counter is not necessary for a practical implementation of watch-points and reverse execution, however it will make program instrumentation much easier for the system developer. John M. Mellor-Crummey, Thomas J. LeBlanc |
ASPLOS | 2 |
| 1989 | Parallel program debuggingabstractAlthough parallel programs are significantly more complex than sequential programs the same debugging methodology, augmented with the appropriate tools, can be used to debug parallel and sequential programs. Experiments have shown that these tools can reduce the debugging cycle for a parallel program dramatically. Other techniques, such as verification and testing, can be integrated with the debugging methodology. For example, static analysis can be used to discover erroneous race conditions. Verification can be used to narrow the search space for errors during monitoring and debugging. Nonetheless, debugging remains the most widely used technique for developing correct parallel programs.> Thomas J. LeBlanc |
COMPSAC | 1 |
| 1989 | The Elmwood Multiprocessor Operating SystemabstractAbstract Elmwood is an object‐oriented, multiprocessor operating system designed and implemented during a graduate seminar. It consists of a minimal kernel and a collection of user‐implemented services. The kernel provides two major abstractions:objects, which consist of code and data, and processes, which represent asynchronous activity. Objects, like programs, are passive. To operate on an abstraction or to request a service, processes invoke anentry proceduredefined by the corresponding object. Objects implement their own protection and synchronization policies using minimal kernel mechanisms. We describe the Elmwood kernel interface, an implementation on the BBN Butterfly parallel processor, and our experiences in developing a multiprocessor operating system under rigid time constraints. These experiences illustrate several general lessons regarding kernel design and trade‐offs for implementation expedience. Thomas J. LeBlanc, John M. Mellor-Crummey, Neal M. Gafter, Lawrence A. Crowl, Peter C. Dibble |
Softw. Pract. Exp. | 1 |
| 1988 | Design Rationale for Psyche a General-Purpose Multiprocessor Operating System
Michael L. Scott, Thomas J. LeBlanc, Brian D. Marsh |
ICPP (2) | 2 |
| 1987 | Crowd Control: Coordinating Processes in Parallel
Thomas J. LeBlanc |
ICPP | 1 |
| 1987 | Debugging Parallel Programs with Instant ReplayabstractThe debugging cycle is the most common methodology for finding and correcting errors in sequential programs. Cyclic debugging is effective because sequential programs are usually deterministic. Debugging parallel programs is considerably more difficult because successive executions of the same program often do not produce the same results. In this paper we present a general solution for reproducing the execution behavior of parallel programs, termed Instant Replay. During program execution we save the relative order of significant events as they occur, not the data associated with such events. As a result, our approach requires less time and space to save the information needed for program replay than other methods. Our technique is not dependent on any particular form of interprocess communication. It provides for replay of an entire program, rather than individual processes in isolation. No centralized bottlenecks are introduced and there is no need for synchronized clocks or a globally consistent logical time. We describe a prototype implementation of Instant Replay on the BBN Butterfly™ Parallel Processor, and discuss how it can be incorporated into the debugging cycle for parallel programs. Thomas J. LeBlanc, John M. Mellor-Crummey |
IEEE Trans. Computers | 1 |
| 1986 | Shared Memory Versus Message-Passing in a Tightly-Coupled Multiprocessor: A Case Study
Thomas J. LeBlanc |
ICPP | 1 |
| 1985 | Hierarchical Process Composition in Distributed Operating Systems
Thomas J. LeBlanc, Stuart A. Friedberg |
ICDCS | 1 |
| 1985 | HPC: A Model of Structure and Change in Distributed SystemsabstractDistributed systems must provide certain fundamental facilities, including communication, protection, resource management, reliability and process (computation) abstraction. The authors describe the design of HPC, an object-oriented model of interprocess relationships for distributed systems which addresses all of these fundamental services. The major novelties of HPC lie in the extension of the process abstraction to collections of processes and the provision of a rich set of structuring mechanisms for distributed computations. An important aspect of the model is that it results in the ability to maintain and exploit execution context for managing processes in a distributed computation. Thomas J. LeBlanc, Stuart A. Friedberg |
IEEE Trans. Computers | 1 |
| 1984 | Broadcast Communication in StarMod
Thomas J. LeBlanc, Robert P. Cook |
ICDCS | 1 |
| 1984 | Programming Language Support for Read-Time Distributed SystemsabstractThis paper advocates the use of a high-level, distributed programming language for programming realtime distributed systems. The advantages of this approach include the program structure imposed by an appropriate language design, static checking provided by the compiler, and efficient execution. A structured approach to the issues of user control of machine dependencies, process scheduling, timing constraints, and interprocess communication is suggested, with specific examples drawn from modern programming languages designed for realtime and distributed programming. Thomas J. LeBlanc |
ICDE | 1 |
| 1984 | The StarMod Distributed Programming KernelabstractAbstract This paper describes the design and implementation of a kernel for the distributed programming language StarMod. The distributed programming kernel was written in a subset of StarMod supported by a concurrent programming kernel. Kernel issues addressed include process representation, I/O device management, signal semantics, system utilities, network communication and the implementation of high‐level language communication primitives. We conclude with a summary of our experiences in the development of a ‘bare machine’ kernel for a network of microprocessors. Thomas J. LeBlanc, Robert H. Gerber, Robert P. Cook |
Softw. Pract. Exp. | 1 |
| 1983 | A Symbol Table Abstraction to Implement Languages with Explicit Scope ControlabstractWe are concerned with languages in which the programmer has explicit control over the referencing environment of a name. Several modern programming languages, including Ada, Euclid, Mesa, and Modula, implement these control capabilities. This paper describes a simple technique which uses the traditional concepts of a hashed symbol table and lexical level to solve many of the symbol table implemen-tation problems associated with explicit scope control. The primary ad-vantage of this technique is that a single symbol table abstraction can be used to simply and efficiently solve most problems in scope control. Robert P. Cook, Thomas J. LeBlanc |
IEEE Trans. Software Eng. | 2 |
| 1982 | Distributed programming languages: design and implementation
Thomas J. LeBlanc, Robert P. Cook |
Comput. Commun. | 1 |