John Reppy's Publications

Language Design


Diderot: a Domain-Specific Language for Portable Parallel Scientific Visualization and Image Analysis.
Gordon Kindlmann, Charisee Chiw, Lamont Samuels, Nick Seltzer, and John Reppy. IEEE Transactions on Visualization and Computer Graphics, pages 867--876, October 2015.
bib | .pdf ]

Many algorithms for scientific visualization and image analysis are rooted in the world of continuous scalar, vector, and tensor fields, but are programmed in low-level languages and libraries that obscure their mathematical foundations. Diderot is a parallel domain-specific language that is designed to bridge this semantic gap by providing the programmer with a high-level, mathematical programming notation that allows direct expression of mathematical concepts in code. Furthermore, Diderot provides parallel performance that takes advantage of modern multicore processors and GPUs. The high-level notation allows a concise and natural expression of the algorithms and the parallelism allows efficient execution on real-world datasets.

Bulk-Synchronous Communication Mechanisms in Diderot, John Reppy and Lamont Samuels. Presented at the Compilers for Parallel Computing Workshop (CPC '15), January 2015. Imperial College, London, UK.
bib | .pdf ]

Diderot is a parallel domain-specific language designed to provide biomedical researchers with a high-level mathematical programming model where they can use familiar tensor calculus notations directly in code without dealing with underlying low-level implementation details. These operations are executed as parallel independent computations. We use a bulk synchronous parallel model (BSP) to execute these independent computations as autonomous lightweight threads called strands. The current BSP model of Diderot limits strand creation to initialization time and does not provide any mechanisms for communicating between strands. For algorithms, such as particle systems, where strands are used to explore the image space, it is useful to be able to create new strands dynamically and share data between strands.

In this paper, we present an updated BSP model with three new features: a spatial mechanism that retrieves nearby strands based on their geometric position in space, a global mechanism for global computations (i.e., parallel reductions) over sets of strands and a mechanism for dynamically allocating new strands. We also illustrate through examples how to express these features in the Diderot language. More, generally, by providing a communication system with these new mechanisms, we can effectively increase the class of applications that Diderot can support.

Diderot: A Parallel DSL for Image Analysis and Visualization.
Charisee Chiw, Gordon Kindlmann, John Reppy, Lamont Samuels, and Nick Seltzer. In Proceedings of the SIGPLAN 2012 Conference on Programming Language Design and Implementation, pages 111--120, New York, NY, June 2012. ACM.
bib | .pdf ]

Research scientists and medical professionals use imaging technology, such as computed tomography (CT) and magnetic resonance imaging (MRI) to measure a wide variety of biological and physical objects. The increasing sophistication of imaging technology creates demand for equally sophisticated computational techniques to analyze and visualize the image data. Analysis and visualization codes are often crafted for a specific experiment or set of images, thus imaging scientists need support for quickly developing codes that are reliable, robust, and efficient.

In this paper, we present the design and implementation of Diderot, which is a parallel domain-specific language for biomedical image analysis and visualization. Diderot supports a high-level model of computation that is based on continuous tensor fields. These tensor fields are reconstructed from discrete image data using separable convolution kernels, but may also be defined by applying higher-order operations, such as differentiation. Early experiments demonstrate that Diderot provides both a high-level concise notation for image analysis and visualization algorithms, as well as high sequential and parallel performance.

Implicitly threaded parallelism in Manticore.
Matthew Fluet, Mike Rainey, John Reppy, and Adam Shaw. Journal of Functional Programming, 20(5-6):537--576, 2011.
bib ]

The increasing availability of commodity multicore processors is making parallel computing ever more widespread. In order to exploit its potential, programmers need languages that make the benefits of parallelism accessible and understandable. Previous parallel languages have traditionally been intended for large-scale scientific computing, and they tend not to be well suited to programming the applications one typically finds on a desktop system. Thus, we need new parallel-language designs that address a broader spectrum of applications. The Manticore project is our effort to address this need. At its core is Parallel ML, a high-level functional language for programming parallel applications on commodity multicore hardware. Parallel ML provides a diverse collection of parallel constructs for different granularities of work. In this paper, we focus on the implicitly threaded parallel constructs of the language, which support fine-grained parallelism. We concentrate on those elements that distinguish our design from related ones, namely, a novel parallel binding form, a nondeterministic parallel case form, and the treatment of exceptions in the presence of data parallelism. These features differentiate the present work from related work on functional data-parallel language designs, which have focused largely on parallel problems with regular structure and the compiler transformations --- most notably, flattening --- that make such designs feasible. We present detailed examples utilizing various mechanisms of the language and give a formal description of our implementation.

Implicitly-threaded parallelism in Manticore.
Matthew Fluet, Mike Rainey, John Reppy, and Adam Shaw. In Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming (ICFP 2008), pages 119--130, September 2008.
bib | .pdf ]

The increasing availability of commodity multicore processors is making parallel computing available to the masses. Traditional parallel languages are largely intended for large-scale scientific computing and tend not to be well-suited to programming the applications one typically finds on a desktop system. Thus we need new parallel-language designs that address a broader spectrum of applications. In this paper, we present Manticore, a language for building parallel applications on commodity multicore hardware including a diverse collection of parallel constructs for different granularities of work. We focus on the implicitly-threaded parallel constructs in our high-level functional language. We concentrate on those elements that distinguish our design from related ones, namely, a novel parallel binding form, a nondeterministic parallel case form, and exceptions in the presence of data parallelism. These features differentiate the present work from related work on functional data parallel language designs, which has focused largely on parallel problems with regular structure and the compiler transformations --- most notably, flattening --- that make such designs feasible. We describe our implementation strategies and present some detailed examples utilizing various mechanisms of our language.

Status Report: The Manticore Project.
Matthew Fluet, Nic Ford, Mike Rainey, John Reppy, Adam Shaw, and Yingqi Xiao. In Proceedings of the 2007 ACM SIGPLAN Workshop on ML, pages 15--24, October 2007.
bib | .pdf ]

The Manticore project is an effort to design and implement a new functional language for parallel programming. Unlike many earlier parallel languages, Manticore is a heterogeneous language that supports parallelism at multiple levels. Specifically, we combine CML-style explicit concurrency with fine-grain, implicitly threaded, parallel constructs. We have been working on an implementation of Manticore for the past six months; this paper gives an overview of our design and a report on the status of the implementation effort.

Metaprogramming with Traits.
John Reppy and Aaron Turon. In Proceedings of the European Conference on Object Oriented Programming (ECOOP 2007), pages 373--398, July-August 2007.
bib | .pdf ]

In many domains, classes have highly regular internal structure. For example, so-called business objects often contain boilerplate code for mapping database fields to class members. The boilerplate code must be repeated per-field for every class, because existing mechanisms for constructing classes do not provide a way to capture and reuse such member-level structure. As a result, programmers often resort to ad hoc code generation. This paper presents a lightweight mechanism for specifying and reusing member-level structure in Java programs. The proposal is based on a modest extension to traits that we have termed trait-based metaprogramming. Although the semantics of the mechanism are straightforward, its type theory is difficult to reconcile with nominal subtyping. We achieve reconciliation by introducing a hybrid structural/nominal type system that extends Java's type system. The paper includes a formal calculus defined by translation to Featherweight Generic Java.

Manticore: A heterogeneous parallel language.
Matthew Fluet, Mike Rainey, John Reppy, Adam Shaw, and Yingqi Xiao. In Proceedings of the Workshop on Declarative Aspects of Multicore Programming (DAMP 2007), pages 37--44, January 2007.
bib | .pdf ]

The Manticore project is an effort to design and implement a new functional language for parallel programming. Unlike many earlier parallel languages, Manticore is a heterogeneous language that supports parallelism at multiple levels. Specifically, we combine CML-style explicit concurrency with NESL/Nepal-style data-parallelism. In this paper, we describe and motivate the design of the Manticore language. We also describe a flexible runtime model that supports multiple scheduling disciplines (e.g., for both fine-grain and course-grain parallelism) in a uniform framework. Work on a prototype implementation is ongoing and we give a status report.

The Standard ML Basis Library.
Emden R. Gansner and John H. Reppy, editors. Cambridge University Press, 2004.
bib | http ]

Object-oriented aspects of Moby.
Kathleen Fisher and John Reppy. Technical Report TR-2003-10, Department of Computer Science, University of Chicago, Chicago, IL, September 2003.
bib ]

Inheritance-based subtyping.
Kathleen Fisher and John Reppy. Information and Computation, 177(1):28--55, August 2002.
bib | .pdf ]

Classes play a dual role in mainstream statically-typed object-oriented languages, serving as both object generators and object types. In such languages, inheritance implies subtyping. In contrast, the theoretical language community has viewed this linkage as a mistake and has focused on subtyping relationships determined by the structure of object types, without regard to their underlying implementations. In this paper, we explore why inheritance-based subtyping relations are useful, and we describe two different approaches to extending the Moby programming language with inheritance-based subtyping relations. In addition, we present a typed object calculus that supports both structural and inheritance-based subtyping, and which provides a formal accounting of our extensions to Moby.

Asynchronous exceptions in Haskell.
Simon Marlow, Simon Peyton Jones, Andrew Moran, and John Reppy. In Proceedings of the SIGPLAN 2001 Conference on Programming Language Design and Implementation, June 2001.
bib ]

Extending Moby with inheritance-based subtyping.
Kathleen Fisher and John Reppy. In Proceedings of the European Conference on Object Oriented Programming, Volume 1850 of Lecture Notes in Computer Science, pages 83--107, New York, NY, June 2000. Springer-Verlag.
bib | .pdf ]

Inheritance-based subtyping.
Kathleen Fisher and John Reppy. In Proceedings of the 7th Workshop on Foundations of Object-oriented Programming, January 2000.
bib | .pdf ]

The design of a class mechanism for Moby.
Kathleen Fisher and John Reppy. In Proceedings of the SIGPLAN 1999 Conference on Programming Language Design and Implementation, pages 37--49, New York, NY, May 1999. ACM.
bib ]

Classes in Object ML via modules.
John H. Reppy and Jon G. Riecke. In Proceedings of the Third Workshop on Foundations of Object-oriented Programming, July 1996.
bib ]

Simple objects for SML.
John H. Reppy and Jon G. Riecke. In Proceedings of the SIGPLAN 1996 Conference on Programming Language Design and Implementation, pages 171--180, New York, NY, May 1996. ACM.
bib ]

Abstract Value Constructors: Symbolic Constants for Standard ML.
William E. Aitken and John H. Reppy. Technical Report TR 92-1290, Department of Computer Science, Cornell University, June 1992. A shorter version appears in the proceedings of the “ACM SIGPLAN Workshop on ML and its Applications,” 1992.
bib | .pdf ]

Standard ML (SML) has been used to implement a wide variety of large systems, such as compilers, theorem provers, graphics libraries, and even operating systems. While SML provides a convenient, high-level notation for programming large applications, it does have certain deficiencies. One such deficiency is the lack of a general mechanism for assigning symbolic names to constant values. In this paper, we present a simple extension of SML that corrects this deficiency in a way that fits naturally with the semantics of SML. Our proposal is a generalization of SML's datatype constructors: we introduce constants that generalize nullary datatype constructors (like nil), and templates that generalize non-nullary datatype constructors (like ::). Constants are identifiers bound to fixed values, and templates are identifiers bound to structured values with labeled holes. Templates are useful because they allow users to treat the representation of structured data abstractly without having to give up pattern matching.

Synchronous Operations as First-class Values.
John H. Reppy. In Proceedings of the SIGPLAN 1988 Conference on Programming Language Design and Implementation, June 1988.
bib ]


This file was generated by bibtex2html 1.98.


Last updated on August 31, 2018
Comments to John Reppy.