Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Adam M. Procter is active.

Publication


Featured researches published by Adam M. Procter.


high performance distributed computing | 2012

A virtual memory based runtime to support multi-tenancy in clusters with GPUs

Michela Becchi; Kittisak Sajjapongse; Ian Graves; Adam M. Procter; Vignesh T. Ravi; Srimat T. Chakradhar

Graphics Processing Units (GPUs) are increasingly becoming part of HPC clusters. Nevertheless, cloud computing services and resource management frameworks targeting heterogeneous clusters including GPUs are still in their infancy. Further, GPU software stacks (e.g., CUDA driver and runtime) currently provide very limited support to concurrency. In this paper, we propose a runtime system that provides abstraction and sharing of GPUs, while allowing isolation of concurrent applications. A central component of our runtime is a memory manager that provides a virtual memory abstraction to the applications. Our runtime is flexible in terms of scheduling policies, and allows dynamic (as opposed to programmer-defined) binding of applications to GPUs. In addition, our framework supports dynamic load balancing, dynamic upgrade and downgrade of GPUs, and is resilient to their failures. Our runtime can be deployed in combination with VM-based cloud computing services to allow virtualization of heterogeneous clusters, or in combination with HPC cluster resource managers to form an integrated resource management infrastructure for heterogeneous clusters. Experiments conducted on a three-node cluster show that our GPU sharing scheme allows up to a 28% and a 50% performance improvement over serialized execution on short- and long-running jobs, respectively. Further, dynamic inter-node load balancing leads to an additional 18-20% performance benefit.


languages compilers and tools for embedded systems | 2015

Semantics Driven Hardware Design, Implementation, and Verification with ReWire

Adam M. Procter; William L. Harrison; Ian Graves; Michela Becchi; Gerard Allwein

There is no such thing as high assurance without high assurance hardware. High assurance hardware is essential, because any and all high assurance systems ultimately depend on hardware that conforms to, and does not undermine, critical system properties and invariants. And yet, high assurance hardware development is stymied by the conceptual gap between formal methods and hardware description languages used by engineers. This paper presents ReWire, a functional programming language providing a suitable foundation for formal verification of hardware designs, and a compiler for that language that translates high-level, semantics-driven designs directly into working hardware. ReWires design and implementation are presented, along with a case study in the design of a secure multicore processor, demonstrating both ReWires expressiveness as a programming language and its power as a framework for formal, high-level reasoning about hardware systems.


international conference on formal engineering methods | 2012

The confinement problem in the presence of faults

William L. Harrison; Adam M. Procter; Gerard Allwein

In this paper, we establish a semantic foundation for the safe execution of untrusted code. Our approach extends Moggis computational λ-calculus in two dimensions with operations for asynchronous concurrency, shared state and software faults and with an effect type system a la Wadler providing fine-grained control of effects. An equational system for fault isolation is exhibited and its soundness demonstrated with a semantics based on monad transformers. Our formalization of the equational system in the Coq theorem prover is discussed. We argue that the approach may be generalized to capture other safety properties, including information flow security.


conference on domain specific languages | 2009

Model-Driven Engineering from Modular Monadic Semantics: Implementation Techniques Targeting Hardware and Software

William L. Harrison; Adam M. Procter; Jason Agron; Garrin Kimmell; Gerard Allwein

Recent research has shown how the formal modeling of concurrent systems can benefit from monadic structuring. With this approach, a formal system model is really a program in a domain specific language defined by a monad for shared-state concurrency. Can these models be compiled into efficient implementations? This paper addresses this question and presents an overview of techniques for compiling monadic concurrency models directly into reasonably efficient software and hardware implementations. The implementation techniques described in this article form the basis of a semantics-directed approach to model-driven engineering.


applied reconfigurable computing | 2015

Hardware Synthesis from Functional Embedded Domain-Specific Languages: A Case Study in Regular Expression Compilation

Ian Graves; Adam M. Procter; William L. Harrison; Michela Becchi; Gerard Allwein

Although FPGAs have the potential to bring software-like flexibility and agility to the hardware world, designing for FPGAs remains a difficult task divorced from standard software engineering norms. A better programming flow would go far towards realizing the potential of widely deployed, programmable hardware. We propose a general methodology based on domain specific languages embedded in the functional language Haskell to bridge the gap between high level abstractions that support programmer productivity and the need for high performance in FPGA circuit implementations. We illustrate this methodology with a framework for regular expression to hardware compilers, written in Haskell, that supports high programmer productivity while producing circuits whose performance matches and, indeed, exceeds that of a state of the art, hand-optimized VHDL-based tool. For example, after applying a novel optimization pass, throughput increased an average of \(28.3\,\%\) over the state of the art tool for one set of benchmarks. All code discussed in the paper is available online [1].


field-programmable technology | 2015

Provably Correct Development of reconfigurable hardware designs via equational reasoning

Ian Graves; Adam M. Procter; William L. Harrison; Gerard Allwein

There is a semantic gap between the hardware definition languages used to design and implement hardware and the languages and logics used to formally specify and verify them. Bridging this gap-i.e., constructing formal models from existing hardware artifacts-can be costly, time-consuming, and error prone-and yet utterly necessary if formal verification is to proceed. This work demonstrates that this gap can be collapsed by starting in a pure functional language that is also a hardware description language, and that equational style verifications may be performed directly on the source text of a hardware design, thereby significantly lowering the verification cost for reconfigurable designs. When combined with an efficient compiler, this methodology achieves both good performance and low cost verification.


arXiv: Programming Languages | 2012

Formal Semantics of Heterogeneous CUDA-C: A Modular Approach with Applications

Chris Hathhorn; Michela Becchi; William L. Harrison; Adam M. Procter

We extend an off-the-shelf, executable formal semantics of C (Ellison and Rosus K Framework semantics) with the core features of CUDA-C. The hybrid CPU/GPU computation model of CUDA-C presents challenges not just for programmers, but also for practitioners of formal methods. Our formal semantics helps expose and clarify these issues. We demonstrate the usefulness of our semantics by generating a tool from it capable of detecting some race conditions and deadlocks in CUDA-C programs. We discuss limitations of our model and argue that its extensibility can easily enable a wider range of verification tasks.


symposium/workshop on haskell | 2008

Making monads first-class with template haskell

Pericles S. Kariotis; Adam M. Procter; William L. Harrison

Monads as an organizing principle for programming and semantics are notoriously difficult to grasp, yet they are a central and powerful abstraction in Haskell. This paper introduces a domain-specific language, MonadLab, that simplifies the construction of monads, and describes its implementation in Template Haskell. MonadLab makes monad construction truly first class, meaning that arcane theoretical issues with respect to monad transformers are completely hidden from the programmer. The motivation behind the design of MonadLab is to make monadic programming in Haskell simpler while providing a tool for non-Haskell experts that will assist them in understanding this powerful abstraction.


reconfigurable communication centric systems on chip | 2016

A programming model for reconfigurable computing based in functional concurrency

William L. Harrison; Ian Graves; Adam M. Procter; Michela Becchi; Gerard Allwein

FPGA programmability remains a concern with respect to the broad adoption of the technology. One reason for this is simple: FPGA applications are frequently implementations of concurrent algorithms that could be most directly rendered in concurrent languages, but there is little or no first-class support for concurrent applications in conventional hardware description languages. It stands to reason that FPGA programmability would be enhanced in a hardware description language with first-class concurrency. The starting point for this paper is a functional hardware description language with built-in support for concurrency called ReWire. Because it is a concurrent functional language, ReWire supports the elegant expression of common concurrency paradigms; we illustrate this with several case studies.


trends in functional programming | 2012

The Design of a Practical Proof Checker for a Lazy Functional Language

Adam M. Procter; William L. Harrison; Aaron Stump

Pure, lazy functional languages like Haskell provide a sound basis for formal reasoning about programs in an equational style. In practice, however, equational reasoning about correctness proofs is underutilized. In the context of Haskell, we suggest that part of the reason for this is the lack of accessible tools for machine-checked equational reasoning. This paper outlines the design of MProver, a proof checker which fills just that niche. MProver features first-class support for reasoning about potentially undefined computations particularly important in a lazy setting, and an extended notion of Haskell-like type classes, enabling a highly modular style of program verification that closely follows familiar functional programming idioms.

Collaboration


Dive into the Adam M. Procter's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Gerard Allwein

United States Naval Research Laboratory

View shared research outputs
Top Co-Authors

Avatar

Ian Graves

University of Missouri

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Jason Agron

University of Arkansas

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge