David Gay

dblp:98/3981 · DBLP profile ↗
← Back
31ranked-venue papers
8as first author
2since 2021 · last 2024
0000-0003-1885-8630ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 19 · 6 first-authorComputer networks · 5Systems, architecture and hardware · 4 · 2 first-authorDatabases, data management, data science and information retrieval · 2 · 2 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
7 papers
Cloud and datacenter computing · 53% Storage systems · 29% Distributed systems · 11%
Software engineering, system software, and programming languages
12 papers
Concurrent programming · 56% Program analysis · 23% Operating systems · 13%
Databases, data mining, and information retrieval
1 paper
Distributed and cloud data management · 100%
Computer networks
6 papers
Internet of things and sensor networks · 100%
Network and information security
2 papers
Web and mobile security · 73% Systems and software security · 27%

Topics — the 30 heaviest of 44, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Cloud and datacenter computing
database migration
0.812024
Transparent Migration from Datastore to Firestore · Proc. VLDB Endow. 2024
Distributed systems › consistency models
strong consistency
0.212024
Transparent Migration from Datastore to Firestore · Proc. VLDB Endow. 2024
Concurrent programming
concurrency bugs
0.222010
An effective dynamic analysis for detecting generalized deadlocks · SIGSOFT FSE 2010
Effective static deadlock detection · ICSE 2009
Concurrent programming
deadlock detection
0.222010
An effective dynamic analysis for detecting generalized deadlocks · SIGSOFT FSE 2010
Effective static deadlock detection · ICSE 2009
Internet of things and sensor networks
wireless sensor network
0.252007
Reprogramming sensor networks safely, quickly, and efficiently · SenSys 2005
Active Sensor Networks · NSDI 2005
The Emergence of Networking Abstractions and Techniques in TinyOS · NSDI 2004
Concurrent programming › concurrency bugs
data races
0.222009
Lightweight annotations for controlling sharing in concurrent data structures · PLDI 2009
SharC: checking data sharing strategies for multithreaded C · PLDI 2008
Program analysis › heap analysis
sharing analysis
0.222009
Lightweight annotations for controlling sharing in concurrent data structures · PLDI 2009
SharC: checking data sharing strategies for multithreaded C · PLDI 2008
Program analysis
static analysis
0.222009
Effective static deadlock detection · ICSE 2009
Autolocker: synchronization inference for atomic sections · POPL 2006
Concurrent programming
atomicity
0.112011
Composable, nestable, pessimistic atomic statements · OOPSLA 2011
Concurrent programming
synchronization
0.112011
Composable, nestable, pessimistic atomic statements · OOPSLA 2011
Concurrent programming › concurrency bugs
deadlock
0.112010
An effective dynamic analysis for detecting generalized deadlocks · SIGSOFT FSE 2010
Program analysis
dynamic analysis
0.112010
An effective dynamic analysis for detecting generalized deadlocks · SIGSOFT FSE 2010
Systems and software security
memory safety
0.112007
Efficient memory safety for TinyOS · SenSys 2007
Operating systems › i/o › i/o subsystem
device drivers
0.112007
Integrating concurrency control and energy management in device drivers · SOSP 2007
Energy-efficient computing
energy management
0.112007
Integrating concurrency control and energy management in device drivers · SOSP 2007
Embedded and real-time systems › embedded software › embedded operating systems
sensor node operating system
0.112007
Integrating concurrency control and energy management in device drivers · SOSP 2007
Concurrent programming › atomicity
atomic sections
0.112006
Autolocker: synchronization inference for atomic sections · POPL 2006
Concurrent programming › synchronization
synchronization synthesis
0.112006
Autolocker: synchronization inference for atomic sections · POPL 2006
Distributed systems › distributed network
sensor networks
0.122005
The nesC language: A holistic approach to networked embedded systems · PLDI 2003
Reprogramming sensor networks safely, quickly, and efficiently · SenSys 2005
Operating systems › special-purpose operating system
embedded operating system
0.122004
The nesC language: A holistic approach to networked embedded systems · PLDI 2003
The Emergence of Networking Abstractions and Techniques in TinyOS · NSDI 2004
Internet of things and sensor networks › wireless sensor network
environmental monitoring
0.112005
A macroscope in the redwoods · SenSys 2005
Internet of things and sensor networks › wireless sensor network › sensor network programming
reprogramming
0.112005
Reprogramming sensor networks safely, quickly, and efficiently · SenSys 2005
Internet of things and sensor networks › wireless sensor network
sensor deployment
0.112005
A macroscope in the redwoods · SenSys 2005
Operating systems › resource management
memory management
0.122001
Language Support for Regions · PLDI 2001
Memory Management with Explicit Regions · PLDI 1998
Operating systems › resource management › memory management
region-based memory management
0.122001
Language Support for Regions · PLDI 2001
Memory Management with Explicit Regions · PLDI 1998
Programming languages and type systems
domain-specific languages
0.012003
The nesC language: A holistic approach to networked embedded systems · PLDI 2003
Programming languages and type systems
language design
0.012003
The nesC language: A holistic approach to networked embedded systems · PLDI 2003
Operating systems › special-purpose operating system › embedded operating system
sensor network operating system
0.012003
The nesC language: A holistic approach to networked embedded systems · PLDI 2003
Concurrent programming
transactional memory
0.012011
Composable, nestable, pessimistic atomic statements · OOPSLA 2011
Performance modeling and evaluation › parallel performance evaluation
multicore scalability
0.012011
Composable, nestable, pessimistic atomic statements · OOPSLA 2011

Methods — techniques the papers use, named apart from their topics

static analysis · 0.3shelters · 0.2lock-based synchronization · 0.2concurrency-based energy management · 0.2dynamic analysis · 0.2safe compilation · 0.1nesc extension · 0.1interrupt-driven concurrency · 0.1trace program generation · 0.1model checking · 0.1sharing casts · 0.1control-dependence graph · 0.1annotation checking · 0.1multidimensional data analysis · 0.1multi-dimensional data analysis · 0.1whole-program analysis · 0.0function inlining · 0.0data race detection · 0.0
YearPublicationVenuePosition
2024 Transparent Migration from Datastore to Firestore
abstract
Datastore was one of Google's first cloud databases, launched initially as part of App Engine, and built over Google's internal Megastore database system. Firestore was launched in 2019, both a re-implementation of Datastore over Google's Spanner database system and a new, mobile and web-friendly Firestore API. Spanner was chosen as the storage engine of Firestore in particular for technical reasons---it provides unrestricted transaction capabilities, strong consistency guarantees, and other improvements over Megastore. To provide these improvements to all our customers, and simplify our overall system, a non-disruptive, zero-downtime migration was executed of all Datastore databases (stored in Megastore) to Firestore databases (stored in Spanner). This migration took a couple of years to design and plan, and about three to execute. This paper describes both the core engine for migrating databases, and various practical problems that were solved to make this journey successful. As of the writing of this paper, all (over one million) databases have been successfully migrated.
Ed Davisson, Tilo Dickopp, David Gay, Eric Karasuda, Ram Kesavan, Vadim Yushprakh
Proc. VLDB Endow.3
2023 Firestore: The NoSQL Serverless Database for the Application Developer
abstract
The recent years have seen an explosive growth in web and mobile application development. Such applications typically have rapid development cycles, and their developers expect mobile-friendly features and serverless characteristics such as rapid deployment capabilities (with minimal initialization), scalability to handle workload spikes, and flexible pay-as-you-go billing. Google’s Firestore is a NoSQL serverless database with real-time notification capability, and together with the Firebase ecosystem greatly simplifies common app development challenges by letting application developers focus primarily on their business logic and user experience. This paper presents the Firestore architecture, how it satisfies the aforementioned requirements, and how its real-time notification system works in tandem with Firebase client libraries to allow mobile applications to provide a smooth user experience even in the presence of network connectivity issues.
Ram Kesavan, David Gay, Daniel Thevessen, Jimit Shah, C. Mohan 0001
ICDE2
2011 Composable, nestable, pessimistic atomic statements
abstract
In this paper we introduce a new method for pessimistically implementing composable, nestable atomic statements. Our mechanism, called shelters, is inspired by the synchronization strategy used in the Jade programming language. Unlike previous lock-based pessimistic approaches, our mechanism does not require a whole-program analysis that computes a global lock order. Further, this mechanism frees us to implement several optimizations, impossible with automatically inserted locks, that are necessary for scaling on recent multi-core systems. Additionally we show how our basic mechanism can be extended to support both open- and closed-nesting of atomic statements, something that, to our knowledge, has not yet been implemented fully-pessimistically in this context. Unlike optimistic, transactional-memory-based approaches, programmers using our mechanism do not have to write compensating actions for open-nesting, or worry about the possibly awkward semantics and performance impact of aborted transactions.
Zachary R. Anderson, David Gay
OOPSLA2
2011 Yada: Straightforward parallel programming
David Gay, Joel Galenson, Mayur Naik, Katherine A. Yelick
Parallel Comput.1
2010 An effective dynamic analysis for detecting generalized deadlocks
abstract
We present an effective dynamic analysis for finding a broad class of deadlocks, including the well-studied lock-only deadlocks as well as the less-studied, but no less widespread or insidious, deadlocks involving condition variables. Our analysis consists of two stages. In the first stage, our analysis observes a multi-threaded program execution and generates a simple multi-threaded program, called a trace program, that only records operations observed during the execution that are deemed relevant to finding deadlocks. Such operations include lock acquire and release, wait and notify, thread start and join, and change of values of user-identified synchronization predicates associated with condition variables. In the second stage, our analysis uses an off-the-shelf model checker to explore all possible thread interleavings of the trace program and check if any of them deadlocks. A key advantage of our technique is that it discards most of the program logic which usually causes state-space explosion in model checking, and retains only the relevant synchronization logic in the trace program, which is sufficient for finding deadlocks. We have implemented our analysis for Java, and have applied it to twelve real-world multi-threaded Java programs. Our analysis is effective in practice, finding thirteen previously known as well as four new deadlocks.
Pallavi Joshi, Mayur Naik, Koushik Sen, David Gay
SIGSOFT FSE4
2009 Effective static deadlock detection
abstract
We present an effective static deadlock detection algorithm for Java. Our algorithm uses a novel combination of static analyses each of which approximates a different necessary condition for a deadlock. We have implemented the algorithm and report upon our experience applying it to a suite of multi-threaded Java programs. While neither sound nor complete, our approach is effective in practice, finding all known deadlocks as well as discovering previously unknown ones in our benchmarks with few false alarms.
Mayur Naik, Chang-Seo Park, Koushik Sen, David Gay
ICSE4
2009 Lightweight annotations for controlling sharing in concurrent data structures
abstract
SharC is a recently developed system for checking data-sharing in multithreaded programs. Programmers specify sharing rules (read-only, protected by a lock, etc.) for individual objects, and the SharC compiler enforces these rules using static and dynamic checks. Violations of these rules indicate unintended data sharing, which is the underlying cause of harmful data-races. Additionally, SharC allows programmers to change the sharing rules for a specific object using a sharing cast, to capture the fact that sharing rules for an object often change during the object's lifetime. SharC was successfully applied to a number of multi-threaded C programs.
Zachary R. Anderson, David Gay, Mayur Naik
PLDI2
2008 SharC: checking data sharing strategies for multithreaded C
abstract
Unintended or unmediated data sharing is a frequent cause of insidious bugs in multithreaded programs. We present a tool called SharC (short for Sharing Checker) that allows a user to write lightweight annotations to declare how they believe objects are being shared between threads in their program. SharC uses a combination of static and dynamic analyses to check that the program conforms to this specification.
Zachary R. Anderson, David Gay, Robert Ennals, Eric A. Brewer
PLDI2
2007 Dependent Types for Low-Level Programming
Jeremy Condit, Matthew Harren, Zachary R. Anderson, David Gay, George C. Necula
ESOP4
2007 Multi-language Synchronization
Robert Ennals, David Gay
ESOP2
2007 Beyond Bug-Finding: Sound Program Analysis for Linux
Zachary R. Anderson, Eric A. Brewer, Jeremy Condit, Robert Ennals, David Gay, Matthew Harren, George C. Necula
HotOS5
2007 User-friendly functional programming for web mashups
abstract
MashMaker is a web-based tool that makes it easy for a normal user to create web mashups by browsing around, without needing to type, or plan in advance what they want to do.
Robert Ennals, David Gay
ICFP2
2007 Safe manual memory management
abstract
We present HeapSafe, a tool that uses reference counting to dynamically verify the soundness of manual memory management of C programs. HeapSafe relies on asimple extension to the usual malloc/free memory management API: delayed free scopes during which otherwise dangling references can exist. Porting programs for use with HeapSafe typically requires little effort (on average 0.6% oflines change), adds an average 11% time overhead (84% in the worst case), and increases space usage by an average of 13%. These results are based on portingover half a million lines of C code, including perl where we found sixpreviously unknown bugs.Many existing C programs continue to use unchecked manual memorymanagement. One reason is that programmers fear that moving to garbage collection is too big a risk. We believe that HeapSafe is a practical way toprovide safe memory management for such programs. Since HeapSafe checks existing memory management rather than changing it, programmers need not worrythat HeapSafe will introduce new bugs; and, since HeapSafe does not managememory itself, programmers can choose to deploy their programs without HeapSafe if performance is critical (a simple header file allows HeapSafe programs to compile and run with a regular C compiler). In contrast, we foundthat garbage collection, although faster, had much higher space overhead, and occasionally caused a space-usage explosion that made the program unusable.
David Gay, Robert Ennals, Eric A. Brewer
ISMM1
2007 Efficient memory safety for TinyOS
abstract
Reliable sensor network software is difficult to create: applications are concurrent and distributed, hardware-based memory protection is unavailable, and severe resource constraints necessitate the use of unsafe, low-level languages. Our work improves this situation by providing efficient memory and type safety for TinyOS 2 applications running on the Mica2, MicaZ, and TelosB platforms. Safe execution ensures that array and pointer errors are caught before they can corrupt RAM. Our contributions include showing that aggressive optimizations can make safe execution practical in terms of resource usage; developing a technique for efficiently enforcing safety under interrupt-driven concurrency; extending the nesC language and compiler to support safety annotations; finding previously unknown bugs in TinyOS; and, finally, showing that safety can be exploited to increase the availability of sensor networks applications even when memory errors are left unfixed.
Nathan Cooprider, Will Archer, Eric Eide, David Gay, John Regehr
SenSys4
2007 Integrating concurrency control and energy management in device drivers
abstract
Energy management is a critical concern in wireless sensornets. Despite its importance, sensor network operating systems today provide minimal energy management support, requiring applications to explicitly manage system power states. To address this problem, we present ICEM, a device driver architecture that enables simple, energy efficient wireless sensornet applications. The key insight behind ICEM is that the most valuable information an application can give the OS for energy management is its concurrency. Using ICEM, a low-rate sensing application requires only a single line of energy management code and has an efficiency within 1.6 % of a hand-tuned implementation. ICEM’s effectiveness questions the assumption that sensornet applications must be responsible for all power management and sensornets cannot have a standardized OS with a simple API.
Kevin Klues, Vlado Handziski, Chenyang Lu 0001, Adam Wolisz, David E. Culler, David Gay, Philip Alexander Levis
SOSP6
2007 Software design patterns for TinyOS
abstract
We present design patterns used by software components in the TinyOS sensor network operating system. They differ significantly from traditional software design patterns because of the constraints of sensor networks and to TinyOS's focus on static allocation and whole-program composition. We describe how nesC has evolved to support these design patterns by including a few simple language primitives and optimizations.
David Gay, Philip Alexander Levis, David E. Culler
ACM Trans. Embed. Comput. Syst.1
2006 Atomicity and visibility in tiny embedded systems
abstract
Visibility is a property of a programming language's memory model that determines when values stored by one concurrent computation become visible to other computations. Our work exploits the insight that in nesC, a C-like language with explicit atomicity, the traditional way of ensuring timely visibility---volatile variables---can be entirely avoided. This is advantageous because the volatile qualifier is a notorious source of programming errors and misunderstandings. Furthermore, the volatile qualifier hurts performance by inhibiting many more optimizations than are necessary to ensure visibility. In this paper we extend the semantics of nesC's atomic statements to include a visibility guarantee, we show two ways that these semantics can be implemented, and we also show that our better implementation has no drawbacks in terms of resource usage.
John Regehr, Nathan Cooprider, David Gay
PLOS3
2006 Autolocker: synchronization inference for atomic sections
abstract
The movement to multi-core processors increases the need for simpler, more robust parallel programming models. Atomic sections have been widely recognized for their ease of use. They are simpler and safer to use than manual locking and they increase modularity. But existing proposals have several practical problems, including high overhead and poor interaction with I/O. We present pessimistic atomic sections, a fresh approach that retains many of the advantages of optimistic atomic sections as seen in "transactional memory" without sacrificing performance or compatibility. Pessimistic atomic sections employ the locking mechanisms familiar to programmers while relieving them of most burdens of lock-based programming, including deadlocks. Significantly, pessimistic atomic sections separate correctness from performance: they allow programmers to extract more parallelism via finer-grained locking without fear of introducing bugs. We believe this property is crucial for exploiting multi-core processor designs.We describe a tool, Autolocker, that automatically converts pessimistic atomic sections into standard lock-based code. Autolocker relies extensively on program analysis to determine a correct locking policy free of deadlocks and race conditions. We evaluate the expressiveness of Autolocker by modifying a 50,000 line high-performance web server to use atomic sections while retaining the original locking policy. We analyze Autolocker's performance using microbenchmarks, where Autolocker outperforms software transactional memory by more than a factor of 3.
Bill McCloskey, David Gay, Eric A. Brewer
POPL3
2005 Software design patterns for TinyOS
abstract
We present design patterns used by software components in the TinyOS operating system. They differ significantly from traditional software design patterns due to TinyOS's focus on static allocation and whole-program composition. We describe how nesC has evolved to support design patterns by including a few simple language primitives
David Gay, Philip Alexander Levis, David E. Culler
LCTES1
2005 Active Sensor Networks
Philip Alexander Levis, David Gay, David E. Culler
NSDI2
2005 Language Support for Interoperable Messaging in Sensor Networks
abstract
Development of network communication in a homogeneous sensor network environment is straightforward as the nodes can share message layouts simply by letting the compiler lay out messages in an arbitrary fashion and using the same executable code on all nodes. However, this simple approach does not usually work in a heterogeneous sensor network setting because different compilers may generate different message layouts, and different processors often have different basic type representations and alignments. The traditional solutions to this problem is to either require programmers to insert network-byte-order and host-byte-order conversions, or to use a compiler that automatically generates marshalling and unmarshalling routines. Unfortunately, these approaches are in-adequate for sensor networks because they are either error-prone and/or add significant overheads to already resource-constrained sensor motes. Instead, we propose a language extension --- network types --- which supports heterogeneous networking in a simple and efficient way. We have implemented network types in the nesC, the language of the TinyOS sensor network operating system and its applications. We have used network types to supports heterogeneous networking between micaz and telos motes (which have different alignment restrictions). We also show that our implementation introduces a negligible amount of overhead in runtime and code size. Network types have the additional benefit of requiring few changes to existing TinyOS code.
Kevin K. Chang, David Gay
SCOPES2
2005 Reprogramming sensor networks safely, quickly, and efficiently
abstract
No abstract available.
Philip Alexander Levis, David Gay
SenSys2
2005 A macroscope in the redwoods
abstract
The wireless sensor network "macroscope" offers the potential to advance science by enabling dense temporal and spatial monitoring of large physical volumes. This paper presents a case study of a wireless sensor network that recorded 44 days in the life of a 70-meter tall redwood tree, at a density of every 5 minutes in time and every 2 meters in space. Each node measured air temperature, relative humidity, and photosynthetically active solar radiation. The network captured a detailed picture of the complex spatial variation and temporal dynamics of the microclimate surrounding a coastal redwood tree. This paper describes the deployed network and then employs a multi-dimensional analysis methodology to reveal trends and gradients in this large and previously-unobtainable dataset. An analysis of system performance data is then performed, suggesting lessons for future deployments.
Gilman Tolle, Joseph Polastre, Robert Szewczyk, David E. Culler, Neil Turner, Kevin Tu, Stephen Burgess, Todd Dawson, Philip Buonadonna, David Gay, Wei Hong 0001
SenSys10
2004 The Emergence of Networking Abstractions and Techniques in TinyOS
Philip Alexander Levis, Samuel Madden 0001, David Gay, Joseph Polastre, Robert Szewczyk, Alec Woo, Eric A. Brewer, David E. Culler
NSDI3
2003 The nesC language: A holistic approach to networked embedded systems
abstract
We present nesC, a programming language for networked embedded systems that represent a new design space for application developers. An example of a networked embedded system is a sensor network, which consists of (potentially) thousands of tiny, low-power "motes," each of which execute concurrent, reactive programs that must operate with severe memory and power constraints.nesC's contribution is to support the special needs of this domain by exposing a programming model that incorporates event-driven execution, a flexible concurrency model, and component-oriented application design. Restrictions on the programming model allow the nesC compiler to perform whole-program analyses, including data-race detection (which improves reliability) and aggressive function inlining (which reduces resource consumption).nesC has been used to implement TinyOS, a small operating system for sensor networks, as well as several significant sensor applications. nesC and TinyOS have been adopted by a large number of sensor network research groups, and our experience and evaluation of the language shows that it is effective at supporting the complex, concurrent programming style demanded by this new class of deeply networked systems.
David Gay, Philip Alexander Levis, J. Robert von Behren, Matt Welsh, Eric A. Brewer, David E. Culler
PLDI1
2002 An analysis of VI Architecture primitives in support of parallel and distributed communication
abstract
Abstract We present the results of a detailed study of the Virtual Interface (VI) paradigm as a communication foundation for a distributed computing environment. Using Active Messages and the Split‐C global memory model, we analyze the inherent costs of using VI primitives to implement these high‐level communication abstractions. We demonstrate a minimum mapping cost (i.e. the host processing required to map one abstraction to a lower abstraction) of 5.4 μs for both Active Messages and Split‐C using four‐way 550 MHz Pentium III SMPs and the Myrinet network. We break down this cost to the use of individual VI primitives in supporting flow control, buffer management and event processing and identify the completion queue as the source of the highest overhead. Bulk transfer performance plateaus at 44 Mbytes/s for both implementations are due to the addition of fragmentation requirements. Based on this analysis, we present the implications for the VI successor, Infiniband. Copyright © 2002 John Wiley & Sons, Ltd.
Andrew Begel, Philip Buonadonna, David E. Culler, David Gay
Concurr. Comput. Pract. Exp.4
2001 Language Support for Regions
abstract
Region-based memory management systems structure memory by grouping objects in regions under program control. Memory is reclaimed by deleting regions, freeing all objects stored therein. Our compiler for C with regions, RC, prevents unsafe region deletions by keeping a count of references to each region. Using type annotations that make the structure of a program's regions more explicit, we reduce the overhead of reference counting from a maximum of 27% to a maximum of 11% on a suite of realistic benchmarks. We generalise these annotations in a region type system whose main novelty is the use of existentially quantified abstract regions to represent pointers to objects whose region is partially or totally unknown. A distribution of RC is available at http://www.cs.berkeley.edu/~dgay/rc.tar.gz.
David Gay, Alex Aiken
PLDI1
2000 Fast Escape Analysis and Stack Allocation for Object-Based Programs
David Gay, Bjarne Steensgaard
CC1
1998 Memory Management with Explicit Regions
abstract
Much research has been devoted to studies of and algorithms for memory management based on garbage collection or explicit allocation and deallocation. An alternative approach, region-based memory management, has been known for decades, but has not been well-studied. In a region-based system each allocation specifies a region, and memory is reclaimed by destroying a region, freeing all the storage allocated therein. We show that on a suite of allocation-intensive C programs, regions are competitive with malloc/free and sometimes substantially faster. We also show that regions support safe memory management with low overhead. Experience with our benchmarks suggests that modifying many existing programs to use regions is not difficult.
David Gay, Alex Aiken
PLDI1
1998 Barrier Inference
abstract
Many parallel programs are written in SPMD style i.e. by running the same sequential program on all processes. SPMD programs include synchronization, but it is easy to write incorrect synchronization patterns. We propose a system that verifies a program's synchronization pattern. We also propose language features to make the synchronization pattern more explicit and easily checked. We have implemented a prototype of our system for Split-C and successfully verified the synchronization structure of realistic programs.
Alex Aiken, David Gay
POPL2
1998 Titanium: A High-performance Java Dialect
abstract
Titanium is a language and system for high-performance parallel scientific computing. Titanium uses Java as its base, thereby leveraging the advantages of that language and allowing us to focus attention on parallel computing issues. The main additions to Java are immutable classes, multidimensional arrays, an explicitly parallel SPMD model of computation with a global address space, and zone-based memory management. We discuss these features and our design approach, and report progress on the development of Titanium, including our current driving application: a three-dimensional adaptive mesh refinement parallel Poisson solver. © 1998 John Wiley & Sons, Ltd.
Katherine A. Yelick, Luigi Semenzato, Geoff Pike, Carleton Miyamoto, Ben Liblit, Arvind Krishnamurthy, Paul N. Hilfinger, Susan L. Graham, David Gay, Phillip Colella, Alex Aiken
Concurr. Pract. Exp.9